Java,修改文件excel

我想知道是否有一种方法在Java编辑一个Excel文件。 例如:如果我有一个Excel工作表填充,我可以改变某些单元格的值而留下其他的值? 先谢谢你

是的,您可以使用Andy Khan的JExcel库很好地做到这一点 。

我有一些体面的结果与Apache POI库: http : //poi.apache.org/

它甚至可以在Android上运行。

JXL旨在提高读取效率(因为这是API的主要用途)。 为了提高性能,当读取电子表格时,不会解释与输出信息有关的数据(例如所有格式化信息,如字体),因为在询问原始数据值时这是多余的。

但是,如果我们需要修改这个电子表格,则需要使用复制方法获得各种写入接口的句柄。

 Workbook workbook = Workbook.getWorkbook(new File("myfile.xls")); WritableWorkbook copy = Workbook.createWorkbook(new File("temp.xls"), workbook); 

这将复制已读入的信息,并执行附加处理来解释写入电子表格所必需的字段。 这种读优化策略的缺点是我们有两个电子表格存储在内存中,而不是一个,因此内存需求加倍。

但在此之后,你可以做任何你想做的事情。 喜欢:

 WritableSheet sheet2 = copy.getSheet(1); WritableCell cell = sheet2.getWritableCell(1, 2); if (cell.getType() == CellType.LABEL) { Label l = (Label) cell; l.setString("modified cell"); } copy.write(); copy.close(); workbook.close(); 

是的,您可以使用Apache POI API编辑Excel工作表

使用可以使用JXL来做到这一点

JXL不提供直接的方式来读取和写入相同的文件(可能看起来不方便,但JXL说,这是因为阅读是主要function(主要用于),这提高了性能,我虽然会更喜欢读写威胁一本工作手册)

 import java.io.File; import java.util.Date; import jxl.*; import jxl.write.*; //open read to your workbook (readonly) Workbook workbook = Workbook.getWorkbook(new File("myfile.xls")); //create a copy workbook on which you will write WritableWorkbook copy = Workbook.createWorkbook(new File("output.xls"), workbook); //modify existing cell WritableSheet sheet2 = copy.getSheet(1); WritableCell cell = sheet2.getWritableCell(2, 4); NumberFormat fivedps = new NumberFormat("#.#####"); WritableCellFormat cellFormat = new WritableCellFormat(fivedps); cell.setFormat(cellFormat); //add cells Label label = new Label(0, 2, "New label record"); sheet2.addCell(label); Number number = new Number(3, 4, 3.1459); sheet2.addCell(number); 

您将不得不编写一些实用程序来执行此操作,但是可以在JXL中执行。

请注意在SheetCopier.java中存在一个错误,L996 + 997:错误:

  if (c.getCellFeatures() != null & c.getCellFeatures().hasDataValidation()) 

应该:

  if (c.getCellFeatures() != null && c.getCellFeatures().hasDataValidation()) 

因为我没有Andy Khans的电子邮件,所以我不能联系他,所以也要重新来源。

作为一个侧面说明,Apache poi对于凡人来说太复杂了,类名称是荒谬的,根据我的经验,apache代码是不友好的,无用的,不健壮的。 所以我尽可能避免apache。