簡體   English   中英

使用JXL(JExcel)將Excel工作表更新為0 KB文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM