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();
}
}
}