JXL如何修改Excel文件中指定单元格的内容???
我做了Excel修改程序,用JXLAPI访问Excel文件,举例来说:假如现在有一个Excel文件(工作薄):t1.xls,里面有100个工作表(sheet),假如第88...
我做了Excel修改程序,用JXL API访问Excel文件,举例来说:假如现在有一个Excel文件(工作薄):t1.xls,里面有100个工作表(sheet),假如第88个工作表的名字是“上月台账”,该表中第78行18列的内容是:123.830(Excel中的数值格式,带三位小数),现在我能通过Cell的getContents()方法访问到该单元格的字符串格式的数据“123.830”,现在我想把这个数据改成“199.125”,并仍然按照原来的数值格式写回原来的工作表(t1.xls中的第88个表)的单元格,应该如何解决??关键代码是啥?请高手明示。。。【注:我再网上找了若干答案,实验证明都不行,只会报异常】
展开
2个回答
展开全部
正好写了一个,给你参考~
public static void modifyExcel(String excelpath){
try {
jxl.Workbook wb =null; //创建一个workbook对象
try {
InputStream is = new FileInputStream(excelpath); //创建一个文件流,读入Excel文件
wb = Workbook.getWorkbook(is); //将文件流写入到workbook对象
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可读的副本,副本指向原Excel文件(即下面的new File(excelpath))
jxl.write.WritableWorkbook wbe= Workbook.createWorkbook(new File(excelpath), wb);//创建workbook的副本
WritableSheet sheet = wbe.getSheet(0); //获取第一个sheet
WritableCell cell =sheet.getWritableCell(0, 0);//获取第一个单元格
jxl.format.CellFormat cf = cell.getCellFormat();//获取第一个单元格的格式
jxl.write.Label lbl = new jxl.write.Label(0, 0, "修改后的值");//将第一个单元格的值改为“修改後的值”
lbl.setCellFormat(cf);//将修改后的单元格的格式设定成跟原来一样
sheet.addCell(lbl);//将改过的单元格保存到sheet
wbe.write();//将修改保存到workbook --》一定要保存
wbe.close();//关闭workbook,释放内存 ---》一定要释放内存
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void modifyExcel(String excelpath){
try {
jxl.Workbook wb =null; //创建一个workbook对象
try {
InputStream is = new FileInputStream(excelpath); //创建一个文件流,读入Excel文件
wb = Workbook.getWorkbook(is); //将文件流写入到workbook对象
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// jxl.Workbook 对象是只读的,所以如果要修改Excel,需要创建一个可读的副本,副本指向原Excel文件(即下面的new File(excelpath))
jxl.write.WritableWorkbook wbe= Workbook.createWorkbook(new File(excelpath), wb);//创建workbook的副本
WritableSheet sheet = wbe.getSheet(0); //获取第一个sheet
WritableCell cell =sheet.getWritableCell(0, 0);//获取第一个单元格
jxl.format.CellFormat cf = cell.getCellFormat();//获取第一个单元格的格式
jxl.write.Label lbl = new jxl.write.Label(0, 0, "修改后的值");//将第一个单元格的值改为“修改後的值”
lbl.setCellFormat(cf);//将修改后的单元格的格式设定成跟原来一样
sheet.addCell(lbl);//将改过的单元格保存到sheet
wbe.write();//将修改保存到workbook --》一定要保存
wbe.close();//关闭workbook,释放内存 ---》一定要释放内存
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (WriteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询