【问题标题】:Updating excel sheet using JXL (JExcel) lead to 0 KB file使用 JXL (JExcel) 更新 excel 表会导致 0 KB 文件
【发布时间】:2014-08-08 22:02:28
【问题描述】:

我在使用 JExcel“jxl”库写入现有 excel 文件时遇到问题。 我有一个包含工作表数据的 jTable,当用户按下删除按钮时,应该从工作表和表模型中删除选定的行。在下面的代码中,它是从 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

}                                            

【问题讨论】:

    标签: java excel row jxl


    【解决方案1】:

    我遇到了同样的问题,你是对的, 问题出在 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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      • 2013-11-08
      • 2018-04-05
      • 2019-11-29
      • 1970-01-01
      • 2017-04-01
      相关资源
      最近更新 更多