JExcel - 在关闭 WritableWorkbook 之前修改多个单元格
JExcel - Modify Multiple Cells Before Closing WritableWorkbook
我试图在单元格 (0,0) 中放置一个标题,然后使用 for()
循环将文件路径添加到接下来的每一行中。但是,我只能添加一行代码;在标题之后,Excel 文档中的其他单元格没有被修改。
这是我创建文件的位置:
private void chooseSheetActionPerformed(java.awt.event.ActionEvent evt) {
sheetNum = chooseSheet.getSelectedIndex() - 1;
try {
WritableWorkbook workbook = Workbook.createWorkbook(newXls);
workbook.createSheet("Sheet1", 0);
workbook.write();
workbook.close();
writeXls();
} catch (Exception ex) {
Logger.getLogger(NewScore.class.getName()).log(Level.SEVERE, null, ex);
}
}
这里是我尝试写入的地方:
public void writeXls() throws Exception {
Workbook wb = Workbook.getWorkbook(newXls);
WritableWorkbook copy = Workbook.createWorkbook(newXls, wb);
WritableSheet ws = copy.getSheet(sheetNum);
WritableCell cell;
// Body Part - Title
Label lab = new Label(0,0,partName);
cell = (WritableCell) lab;
ws.addCell(cell);
copy.write();
// Image Info
int i = 1;
for (File file : imageArray(dir)) {
Label label = new Label (0,i,"test" + i);
cell = label;
ws.addCell(cell);
copy.write();
i++;
}
copy.close();
}
有没有办法让我的 for()
循环工作,或者我需要换一种方式来解决这个问题?
谢谢!
好的。最初我对您是要创建新工作簿还是编辑现有工作簿感到困惑。但是看来你需要一个新的。
代码示例中似乎存在两个问题。
第一个是您检索了刚刚创建的 excel 文件并将其内容复制到自身中。
Workbook wb = Workbook.getWorkbook(newXls);
WritableWorkbook copy = Workbook.createWorkbook(newXls, wb);
我注意到的另一件事是,为了保存所有更改,最后只需要在 WritableWorkbook 实例上调用 write 一次。
我完成了这样的代码。
private static final String FILE_NAME = "D:/test_out.xls";
private static final String SHEET_NAME = "Test sheet name";
private static final int SHEET_INDEX = 0;
private static final String HEADER = "My header";
public static void main(String[] args) throws Exception {
WritableWorkbook writableWorkbook = Workbook.createWorkbook(new File(FILE_NAME));
WritableSheet writableSheet = writableWorkbook.createSheet(SHEET_NAME, SHEET_INDEX);
int columnIndex = 0;
int rowIndex = 0;
writableSheet.addCell(new Label(columnIndex, rowIndex, HEADER));
for (String value : Arrays.asList("First value", "Second value", "Another value")) {
writableSheet.addCell(new Label (columnIndex, ++rowIndex, value));
}
writableWorkbook.write();
writableWorkbook.close();
}
它为我创建了一个 excel 文件,其中有一个 sheet。 sheet 包含一个包含 4 个单元格的列:我的 header、第一个值、第二个值、另一个值。当然,您可以随意在其中输入您需要的任何值:)
我试图在单元格 (0,0) 中放置一个标题,然后使用 for()
循环将文件路径添加到接下来的每一行中。但是,我只能添加一行代码;在标题之后,Excel 文档中的其他单元格没有被修改。
这是我创建文件的位置:
private void chooseSheetActionPerformed(java.awt.event.ActionEvent evt) {
sheetNum = chooseSheet.getSelectedIndex() - 1;
try {
WritableWorkbook workbook = Workbook.createWorkbook(newXls);
workbook.createSheet("Sheet1", 0);
workbook.write();
workbook.close();
writeXls();
} catch (Exception ex) {
Logger.getLogger(NewScore.class.getName()).log(Level.SEVERE, null, ex);
}
}
这里是我尝试写入的地方:
public void writeXls() throws Exception {
Workbook wb = Workbook.getWorkbook(newXls);
WritableWorkbook copy = Workbook.createWorkbook(newXls, wb);
WritableSheet ws = copy.getSheet(sheetNum);
WritableCell cell;
// Body Part - Title
Label lab = new Label(0,0,partName);
cell = (WritableCell) lab;
ws.addCell(cell);
copy.write();
// Image Info
int i = 1;
for (File file : imageArray(dir)) {
Label label = new Label (0,i,"test" + i);
cell = label;
ws.addCell(cell);
copy.write();
i++;
}
copy.close();
}
有没有办法让我的 for()
循环工作,或者我需要换一种方式来解决这个问题?
谢谢!
好的。最初我对您是要创建新工作簿还是编辑现有工作簿感到困惑。但是看来你需要一个新的。
代码示例中似乎存在两个问题。 第一个是您检索了刚刚创建的 excel 文件并将其内容复制到自身中。
Workbook wb = Workbook.getWorkbook(newXls);
WritableWorkbook copy = Workbook.createWorkbook(newXls, wb);
我注意到的另一件事是,为了保存所有更改,最后只需要在 WritableWorkbook 实例上调用 write 一次。
我完成了这样的代码。
private static final String FILE_NAME = "D:/test_out.xls";
private static final String SHEET_NAME = "Test sheet name";
private static final int SHEET_INDEX = 0;
private static final String HEADER = "My header";
public static void main(String[] args) throws Exception {
WritableWorkbook writableWorkbook = Workbook.createWorkbook(new File(FILE_NAME));
WritableSheet writableSheet = writableWorkbook.createSheet(SHEET_NAME, SHEET_INDEX);
int columnIndex = 0;
int rowIndex = 0;
writableSheet.addCell(new Label(columnIndex, rowIndex, HEADER));
for (String value : Arrays.asList("First value", "Second value", "Another value")) {
writableSheet.addCell(new Label (columnIndex, ++rowIndex, value));
}
writableWorkbook.write();
writableWorkbook.close();
}
它为我创建了一个 excel 文件,其中有一个 sheet。 sheet 包含一个包含 4 个单元格的列:我的 header、第一个值、第二个值、另一个值。当然,您可以随意在其中输入您需要的任何值:)