当前位置: 首页 > 知识库问答 >
问题:

如何将excel表复制到同一本Worbook中?

吕骞尧
2023-03-14

我试图用Apache poi将现有的excel工作表复制到相同的工作簿中(它包含3个工作表)。

    FileInputStream file = new FileInputStream(new File("work.xlsx"));
    
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    
    XSSFSheet sheet_copy =   workbook.cloneSheet(0);
    
    int num = workbook.getSheetIndex(sheet_copy);
    
    workbook.setSheetName(num, "copy_file");
    

运行此代码后,工作簿总是包含3个工作表,“copy_file”没有创建,我没有得到任何错误或异常

你知道吗?

共有1个答案

翟曦之
2023-03-14

您需要打开一个输出流并写入工作簿。确保在此写入操作后关闭工作簿和输出流。

演示:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Main {
    public static void main(String[] args) throws IOException {
        FileInputStream file = new FileInputStream(new File("work.xlsx"));
        XSSFWorkbook workbook = new XSSFWorkbook(file);
        XSSFSheet sheet_copy = workbook.cloneSheet(0);
        int num = workbook.getSheetIndex(sheet_copy);
        workbook.setSheetName(num, "copy_file");
        file.close();

        FileOutputStream outputStream = new FileOutputStream("work.xlsx");
        workbook.write(outputStream);
        workbook.close();
        outputStream.close();
    }
}
 类似资料:
  • 问题内容: A)到目前为止我的方式: B)我想做这样的事情: 注意:我要复制到同一张表中。我只想轻松地将其全部复制到另一行,同时为新行赋予新的ID。 那是好的实践吗? 问题答案: 唯一的方法是像第一个示例一样列出所有列。没有像这样的语法 但是,出于SQL注入和计划缓存的原因,您应该使用参数化的SQL。

  • 问题内容: 我有一个带有源文件路径的字符串和另一个带有destfile路径的字符串,它们都指向Excel工作簿。 我想获取源文件的第一张纸并将其作为新选项卡复制到destfile(与destfile中的位置无关),然后保存它。 在or或or中找不到简单的方法。我想念什么吗? 问题答案: 解决方案1 使用该软件包的仅Python解决方案。仅数据值将被复制。 解决方案2 使用该程序包将复制操作委派给E

  • 我想将table 1的内容复制到table 2中,但它不是直接复制,因为table 2包含的列比表1多。结构类似于这样: 表 1 { 列 2 列 4 列 6 } 表2{column1 column2 column3 column4 column5 column6} 我想做的是将table1到table2中的每一行相加,并为缺少的列设置默认值。任何帮助都将不胜感激。

  • 我已经从网上搜索了很多,但不幸的是,没有一个奏效。如何将工作表从一个工作簿复制到另一个工作簿,使用C#在Excel中剪切和粘贴单元格值,错误:range类的Pastespecial方法失败。 知道为什么会这样吗?

  • 问题内容: 如何将值从一列复制到另一列?我有: 我希望有: 我应该有哪些mysql查询? 问题答案: 有关代码的简短答案是: 这是表名,周围是重音符号(又称“-”),因为这是MySQL惯例,用于转义关键字(在这种情况下为关键字)。 请注意,这是非常危险的查询,它将擦除表每行中列中的所有内容,并替换为(无论其值如何) 使用子句将查询限制为仅特定的行集更为常见:

  • 问题内容: 我正在研究数据结构和链表,但是我没有得到如何制作链表副本的概念。有人可以使用伪代码或C代码进行解释吗? 问题答案: 复制链表的逻辑是递归的,并且基于以下观察结果: 空列表的克隆是空列表。 具有第一个节点x和其余节点xs的列表的克隆是x的副本,该副本位于xs的克隆之前。 如果您使用C ++对链表进行编码,则可以很干净: