概述
最近搞excel,用到JXL 。然后读写的时候遇到问题 -- jxl竟然修改一个excel还要先读入再copy,然后才能再那份copy上修改,囧;更囧的是copy以后是2份内存啊~偶的机器直接outofmemory。。。加了-xmx128m才勉强过去,为撒这么不人性化。。。记得以前好像大家都使用 POI的,故google之 ,发现版本已经升级到3.6轰轰~
下下来,运行找不到类WorkbookFactory 结果在一个什么ooxml什么的包里,囧。经过测试,的确poi的速度有点大跌眼镜,36116行的数据,2者的解析时间差了4倍,输出时间差了2.5倍。不过POI应该是更强大点,JXL的copy会丢失用户的筛选(小遗憾)。不过JXL用起来真不是很顺手,读和写还要分开,2份东东,实现类是2套,感觉对用户不是很友好,哎,谁叫人家速度快呢~
//测试JXL
long st = System.currentTimeMillis();
InputStream inp = new FileInputStream(
"d:/mydoc/sftp/admin(2010.09.20.152644.798)(.知识库类型树)gai.xls");
Workbook wb = WorkbookFactory.create(inp);
Sheet sheet = wb.getSheetAt(0);
Row row = sheet.getRow(1);
Cell cell = row.getCell(5);
if (cell == null)
cell = row.createCell(3);
CellStyle style = wb.createCellStyle();
style.setFillForegroundColor(IndexedColors.AQUA.getIndex());
style.setFillPattern(CellStyle.SOLID_FOREGROUND);
cell.setCellValue("a test");
System.out.println(System.currentTimeMillis() - st);
cell.setCellStyle(style);
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("/test.xls");
wb.write(fileOut);
fileOut.close();
System.out.println(System.currentTimeMillis() - st);
//测试POI
long st = System.currentTimeMillis();
InputStream inp = new FileInputStream(
"d:/mydoc/sftp/admin(2010.09.20.152644.798)(.知识库类型树)gai.xls");
FileOutputStream fileOut = new FileOutputStream("/test.xls");
Workbook wb = Workbook.getWorkbook(inp);
System.out.println(System.currentTimeMillis() - st);
WritableWorkbook writeWb = Workbook.createWorkbook(fileOut, wb);
System.out.println(System.currentTimeMillis() - st);
WritableSheet sheet = writeWb.getSheet(0);
try {
WritableCell c = sheet.getWritableCell(5, 1);
WritableCellFormat newFormat = new WritableCellFormat(c
.getCellFormat());
newFormat.setBackground(Colour.RED);
c.setCellFormat(newFormat);
} catch (WriteException e) {
e.printStackTrace();
}
// Write the output to a file
writeWb.write();
writeWb.close();
fileOut.close();
System.out.println(System.currentTimeMillis() - st);
测试结果如下:
JXL
POI
读取/解析时间
469ms
1843ms
copy到写工作簿时间
1200ms
输出时间
800ms
5015ms
PS:后来深入用了,发现POI还真是蛮强大的(新闻组很活跃)。。可以部分着色,Cell有RichTextString。
最后
以上就是有魅力皮卡丘为你收集整理的java 修改保存excel,java Excel 工具(修改excel表格并保存)的全部内容,希望文章能够帮你解决java 修改保存excel,java Excel 工具(修改excel表格并保存)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复