有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将excel工作表复制到同一工作簿?

我正在尝试使用ApachePOI将现有excel工作表复制到java中的同一工作簿(它包含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张工作表,“复制文件”未创建,我没有收到任何错误或异常

有什么想法吗


共 (1) 个答案

  1. # 1 楼答案

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

    演示:

    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();
        }
    }