当前位置: 首页 > 面试题库 >

在Java中使用JXL复制工作表

萧升
2023-03-14
问题内容

我想将工作表从现有的XLS文档复制到新的文档中,再复制到新位置。
我如何用JXL做到这一点?

Workbook w1 = Workbook.getWorkbook(new File("ExistingDocument.xls"), settings);

WritableWorkbook w2 = Workbook.createWorkbook(new File("NewDocument.xls"));

/* So here, I would like copy the first sheet from w1 to the second sheet of w2 ... */

w2.write();
w2.close();

w1.close();

编辑:
w1.getSheet(0).getCell(0, 0)不是WritableCell,所以我无法使用该copyTo方法。
有什么方法可以w1w2工作簿添加单元格/ 工作表吗?
edit2:
那么我是否必须将工作簿的可写副本创建到另一个文件?
edit3: 或者还有其他免费的lib可以做到这一点吗?)

更新:

当我运行此代码时,我会jxl.common.AssertionFailed在网上看到异常

WritableCellFormat newFormat = new WritableCellFormat(readFormat);

如果我删除此行并将代码更改为

newCell.setCellFormat(readFormat);

那么就不会复制单元格样式(字体,单元格边框等)。

try {
    Workbook sourceDocument = Workbook.getWorkbook(new File("C:\\source.xls"));
    WritableWorkbook writableTempSource = Workbook.createWorkbook(new File("C:\\temp.xls"), sourceDocument);
    WritableWorkbook copyDocument = Workbook.createWorkbook(new File("C:\\copy.xls"));
    WritableSheet sourceSheet = writableTempSource.getSheet(0);
    WritableSheet targetSheet = copyDocument.createSheet("sheet 1", 0);

    for (int row = 0; row < sourceSheet.getRows(); row++) {
        for (int col = 0; col < sourceSheet.getColumns(); col++) {
            WritableCell readCell = sourceSheet.getWritableCell(col, row);
            WritableCell newCell = readCell.copyTo(col, row);
            CellFormat readFormat = readCell.getCellFormat();
                    /* exception on the following line */
            WritableCellFormat newFormat = new WritableCellFormat(readFormat);
            newCell.setCellFormat(newFormat);
            targetSheet.addCell(newCell);
        }
    }
    copyDocument.write();
    copyDocument.close();
    writableTempSource.close();
    sourceDocument.close();
} catch (Exception e) {
    e.printStackTrace();
}

如何将单元格样式也复制到新单元格?


问题答案:

如何将一个工作簿中的工作表复制到另一工作簿中的新工作表?

可以完成,但是需要一些工作。首先,您必须复制它的单元格(在几个嵌套的for循环内)。对于每个单元格,您都需要调用copyTo()方法,这将产生一个深层副本。但是,格式仅是浅表复制,因此您将需要获取单元格格式并使用该格式的复制构造函数,然后在刚复制的单元格上调用setCellFormat。然后将重复的单元格添加到新的电子表格

该代码可能如下所示:

 for (int i = 0 ; i < numrows ; i++){
    for (int j = 0 ; j < numcols ; j++){
        readCell = sheet.getCell(i, j);
        newCell = readCell.copyTo(i, j);
        readFormat = readCell.getCellFormat();
        newFormat = new WritableCellFormat(readFormat);
        newCell.setCellFormat(newFormat);
        newSheet.add(newCell);
    }
}

资源:

  • JExcel API常见问题


 类似资料:
  • 问题内容: 我想检查工作簿中是否包含工作表名称“ Login”。如果存在,那么我要在其中写入数据row = row + 1,否则直接写入数据,然后关闭报告。所以,任何人都可以让我知道该怎么做。我想用下面的方法做。 主类: WritablData类别: 问题答案: 我在这里没有得到我问题的答案,但是是的,现在我有了解决方案,它对我来说也很好用,请检查以下代码,希望它也对您有所帮助:

  • 问题内容: 如何在Apache poi的两个不同的工作簿之间复制工作表? 该方法缺少引用此线程。没有这样的解决方案。 问题答案: 经过研究和尝试,这里是我的解决方案。我已经通过Java 1.6和apache-poi 3.8进行了测试 在这里,我将不提供适用于我的解决方案,特别是在这种情况下,我将粘贴工作表和输入流列表(我要合并的不同工作簿)。 我的解决方案是一个合并的解决方案,我从这里合并了整个源

  • 本文向大家介绍java 中JXL操作Excel实例详解,包括了java 中JXL操作Excel实例详解的使用技巧和注意事项,需要的朋友参考一下 JXL操作Excel 前言: jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功能相对POI比较弱一点。但jExcelAPI对中文支持非常好,API是纯Ja

  • 问题内容: 这两个API中哪个更容易读取/写入/编辑Excel工作表?这些API是否不支持CSV扩展? 使用JXL进行file.xls和file.xlsx时,出现如下异常: .xls和.xlsx扩展名都可以。我使用的Java版本是:JDK1.6 问题答案: 我已经使用了JXL(现在称为“ JExcel”)和Apache POI 。最初,我使用JXL,但现在使用Apache POI。 首先,这两个A

  • 请帮助我…每当我启动xammp服务器并尝试启动mysql时,它会出现如下错误。。。

  • JXL

    jxl is a pure java 5 super-project that includes Enclosure, Peermi, Enshell, and Xlp.