POI对ecxl文件内容进行修改
2018-02-07 17:41
288 查看
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import org.apache.poi.EncryptedDocumentException; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ChekFile { public static void main(String[] args) { File f = new File("e:/liu"); print(f, 0); } /** * 遍历文件夹 * * @param f * @param len */ @SuppressWarnings("unlikely-arg-type") public static void print(File f, int len) { File[] file = f.listFiles(); for (int i = 0; i < file.length; i++) { if (file[i].isDirectory()) { //判断是否文件夹 print(file[i], len + 1); } // 为防止输出文件覆盖源文件,所以更改输出盘路径 也可自行设置其他路径 // File outPath = new File(file[i].getParent().replace("F:", "E:")); File readfile = new File(file[i].getAbsolutePath()); if (!readfile.isDirectory()) { String filename = readfile.getName(); // 读到的文件名 String absolutepath = readfile.getAbsolutePath(); // 文件的绝对路径 //一些特殊字符分割要加【】 String[] fileType = absolutepath.split("[.]"); if(fileType[1].equals("xlsx")||fileType[1].equals("xls")) { writeExcel3(absolutepath); System.out.println(absolutepath); } } } } //修改excel表格,path为excel修改前路径(D:\\test.xlsx) public static void writeExcel3(String path) { try { //传入的文件 FileInputStream fileInput = new FileInputStream(path); //poi包下的类读取excel文件 // 创建一个webbook,对应一个Excel文件 @SuppressWarnings("resource") Workbook workbook = null; try { workbook = WorkbookFactory.create(fileInput); } catch (EncryptedDocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (InvalidFormatException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } //对应Excel文件中的sheet,0代表第一个 Sheet sh = workbook.getSheetAt(0); //修改excle表的第5行,从第三列开始的数据 //获取总行数 int rowNum = sh.getLastRowNum(); //获取总行数 int coloumNum=sh.getRow(0).getPhysicalNumberOfCells(); for(int i = 0;i<=rowNum;i++) { for(int j = 0;j<=coloumNum;j++) { try { // System.out.println(sh.getRow(i).getCell((short)j).getStringCellValue()+i+""+j); //// System.out.println("ddd"); // if(sh.getRow(i).getCell((short)j).getStringCellValue().equals("福瑞博得")) { // sh.getRow(i).getCell((short) j).setCellValue("信必忧"); // System.out.println("d"); // } //获取单元格内容的类型 switch(sh.getRow(i).getCell((short)j).getCellTypeEnum()) { case STRING://字符串 //获取单元格的内容 if(sh.getRow(i).getCell((short)j).getStringCellValue().contains("福瑞博得")) { //设置单元格的内容 sh.getRow(i).getCell((short) j).setCellValue(sh.getRow(i).getCell((short)j).getStringCellValue().replaceAll("福瑞博得", "信必忧")); } if(sh.getRow(i).getCell((short)j).getStringCellValue().contains("福瑞博得")) { sh.getRow(i).getCell((short) j).setCellValue(sh.getRow(i).getCell((short)j).getStringCellValue().replaceAll("福瑞博得", "symbio")); } break; case NUMERIC: break; case BOOLEAN: break; case FORMULA: break; case BLANK: break; case ERROR: break; default: break; } } catch (Exception e) { // System.out.println(sh.getRow(i).getCell((short)j).getStringCellValue()+i+""+j+"为空"); continue; } } } FileOutputStream os = new FileOutputStream(path); // FileOutputStream os = new FileOutputStream("D:\\test.xlsx");//此路径也可写修改前的路径,相当于在原来excel文档上修改 os.flush(); //将Excel写出 workbook.write(os); //关闭流 fileInput.close(); os.close(); } catch (IOException e) { e.printStackTrace(); } }
pom.xml文件
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>openxml4j</artifactId> <version>1.0-beta</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-scratchpad</artifactId> <version>3.17</version> </dependency>
相关文章推荐
- 对PDF文件内容如何进行编辑修改
- 内容文件Java创建TXT文件并进行读、写、修改操作
- 创建4个线程,4个线程同时对一个文件进行修改。线程1负责向文件写入A,线程2负责向文件写入B,线程3负责写入C,线程4负责写入D。最终文件里的内容应该是ABCDABCDABCD....循环10次;
- java对txt文本文件的复制粘贴(对文件内容进行了简单的修改)以行为一个处理单位
- 用POI在word07模板文件中创建表格,修改内容等操作
- 如何对PDF文件中的内容进行编辑修改
- 文件下载:POI读取word或Excel,修改内容后以流的形式输出到前端
- poi操作excel导出是否修改模板文件内容的问题
- 如何使用10M的内存读入100M的文件,并且保证在读取过程中可进行删除、修改和增加内容
- C语言实现对文件内容进行修改
- C# 对文本文档进行内容修改 作为日志文件
- java poi 打开 excel 文件 保留格式 修改内容 另存为新文件
- php 修改文件内容,替换指定内容
- java中,对文件进行追加内容到txt的三种方法
- 修改 其他一些文件的内容,也就是修改 build.prop 里的 内容
- 一个修改文件中指定内容的程序
- java 读取,修改properties文件,不改变文件内容顺序
- c/c++ 通过 内存映射 方法同步修改文件内容
- 使用POI读取XLSX文件,包含对EXCEL中自定义时间格式的处理--包含自己解决和修改jeeplus的源码的
- [置顶] 给定两个整形变量的值, 但是不允许建立临时文件将两个值得内容进行交换。