java 读写 excel 文件

xiaoxiao2021-02-28  86

package wang; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.Sheet; import jxl.Workbook; import jxl.write.Label; /** * 使用jxl的jar包 * A B C D E F 1 序号 商品名称 库存量 入库量 出库量 剩余量 2 1 零件1 8 2 4 6 3 2 零件2 10 3 0 13 4 3 零件3 2 2 4 0 5 4 零件4 10 4 5 9 6 5 零件5 7 5 0 12 7 6 零件6 10 1 5 6 8 7 零件7 5 0 3 2 9 8 零件8 10 2 3 9 10 9 零件9 5 5 9 1 此列每次都变化 此列每次都变化 此列等于C列+D列-E列 此表需重复使用,希望实现的功能是:写一个代码,保存此表时将F列的数值复制给C列,覆盖C列原有值,并将D列数值清零。 * */ public class Change { public static void main(String[] args) { jxl.Workbook readwb = null; try{ // 从本地文件构建只读的Workbook对象(就是readwb) InputStream instream = new FileInputStream("例子.xls");//路径可以自己改(这里用的是当前项目的文件夹),这是源文件路径 // InputStream instream = new FileInputStream("D://例子.xls"); readwb = Workbook.getWorkbook(instream); // Sheet的下标是从0开始, 获取第一张Sheet表 Sheet readsheet = readwb.getSheet(0); // 获取Sheet表中所包含的总列数 int rsColumns = readsheet.getColumns(); // 获取Sheet表中所包含的总行数 int rsRows = readsheet.getRows(); // 创建真实写入的 Excel 工作薄对象 jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("例子-修改后.xls"), readwb);//路径可以自己改,这是目标文件路径 // jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File("D://例子-修改后.xls"), readwb); // 读取第一张工作表 jxl.write.WritableSheet ws = wwb.getSheet(0); // 循环遍历那个原始的 for (int i = 0; i < rsRows; i++) { for (int j = 0; j < rsColumns; j++) { if (i == 0) {// 第0行是标题行 照写 // 原始文件 第i行第j列的单元格 Cell cell = readsheet.getCell(j, i); String string = cell.getContents(); // 获得单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(j, i); // 判断单元格的类型, 做出相应的转化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString(string); } } else { if (j == 2) {//第3行的 C // 获取的是第5行 F Cell cell = readsheet.getCell(5, i); String string = cell.getContents(); //创建数值的 int int1 = Integer.parseInt(string); jxl.write.Number label = new jxl.write.Number(j,i,int1); ws.addCell(label); } else if (j == 3) {//第4行 D // 判断单元格的类型, 做出相应的转化 Label label = new Label(j,i,""); ws.addCell(label); } else {//除了那上面两列特殊,其他的不用变 // 原始文件 第i行第j列的单元格 Cell cell = readsheet.getCell(j, i); String string = cell.getContents(); // 获得单元格对象 jxl.write.WritableCell wc = ws.getWritableCell(j, i); // 判断单元格的类型, 做出相应的转化 if (wc.getType() == CellType.LABEL) { Label l = (Label) wc; l.setString(string); } } } } } // 写入Excel对象 wwb.write(); wwb.close(); System.out.println("~~~~~~~完成~~~~~"); } catch (Exception e) { e.printStackTrace(); } finally { readwb.close(); } } }

 

转载请注明原文地址: https://www.6miu.com/read-78636.html

最新回复(0)