[英]Updating excel sheet using JXL (JExcel) lead to 0 KB file
使用JExcel“ jxl”庫寫入現有的excel文件時遇到問題。 我有一個jTable包含工作表的數據,當用戶按下Delete按鈕時,應該從工作表以及表模型中刪除選定的行..在下面的代碼中,將其從jTable模型中刪除,但不刪除從表! 實際上,按下刪除按鈕后,整個工作簿都變成了0 KB! 你能告訴我什么問題嗎?
“注意:我嘗試將復制的工作簿的名稱更改為另一個名稱,並刪除了這一行(sheet.removeRow(deletedrow + 1);),它復制了原始工作簿就很好了。我認為問題出在刪除行中”
private void removebuttonActionPerformed(java.awt.event.ActionEvent evt) {
int deletedrow;
deletedrow = logtable.getSelectedRow();
int dialogButton = JOptionPane.YES_NO_OPTION;
int dialogResult = JOptionPane.showConfirmDialog(this, "Are you sure you want to delete this record from "+ sheetname + " sheet?", "Confirmation Message", dialogButton);
if (dialogResult == 0) {
try {
Workbook workbook = Workbook.getWorkbook(new File("path/" + wbname + ".xls"));
WritableWorkbook copy = Workbook.createWorkbook(new File("path/" +wbname +".xls"), workbook);
WritableSheet sheet = copy.getSheet(sheetname);
sheet.removeRow(deletedrow + 1);
copy.write();
copy.close();
JOptionPane.showMessageDialog(this, "The record has been deleted from (" + sheetname + ") successfully", "Information Message", JOptionPane.INFORMATION_MESSAGE);
model.removeRow(deletedrow);
logtable.setModel(model);
}//try
catch (IOException | BiffException | WriteException | HeadlessException e) {
e.printStackTrace();
}
}//if confirmation message = yes
}
我遇到了同樣的問題,對了,問題出在removeRow上。 它非常適合最后一行,但不能刪除中間行。
我所做的是我將以下各行復制了回來,並刪除了最后一行。 這是代碼:
for (int rowIdx = deletedrow; rowIdx < sheet.getRows(); rowIdx++) {
for (int colIdx = 0; colIdx < sheet.getColumns(); colIdx++) {
Cell readCell = sheet.getCell(colIdx, rowIdx+1);
Label label = new Label(colIdx, rowIdx, readCell.getContents());
CellFormat readFormat = readCell.getCellFormat();
if (readFormat != null) {
label.setCellFormat(readFormat);
}
sheet.addCell(label);
}
}
sheet.removeRow(sheet.getRows());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.