使用 jxl 修改现有 Excel

2022-09-03 05:24:17

我无法使用jxl编辑现有的excel工作表。它总是创建一个新的。任何人都可以帮我。请给出一个小的示例代码。


答案 1

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

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

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

注意:这直接取自Andy Khan的教程页面


答案 2

我知道这是一个相当古老的问题,但是如果有人会遇到同样的问题,那么为了保留正确的格式(字体类型,着色等),您应该在将其转换为Label之前保存单元格格式,然后强制单元格采用以前的格式。法典:

CellFormat cfm = cell.getCellFormat();
Label l = (Label) cell; 
l.setString("modified cell");
cell.setCellFormat(cfm);

推荐