java Excel 工具(修改excel表格并保存)

8 篇文章 0 订阅
1 篇文章 0 订阅

最近搞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
读取/解析时间 469ms1843ms
copy到写工作簿时间 1200ms
输出时间 800ms
5015ms

 

PS:后来深入用了,发现POI还真是蛮强大的(新闻组很活跃)。。可以部分着色,Cell有RichTextString。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值