如何将excelsheet复制到同一个工作簿?
How to copy excel sheet to the same worbook?
我正在尝试使用 Apache poi 将现有 excel sheet 复制到 java 中的同一个工作簿(它包含 3 sheets )。
这是我所做的:
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 sheets ,没有创建“copy_file”,我没有收到任何错误或异常。
有什么想法吗?
您需要打开一个输出流并写入工作簿。确保在此写入操作后关闭工作簿和输出流。
演示:
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();
}
}
我正在尝试使用 Apache poi 将现有 excel sheet 复制到 java 中的同一个工作簿(它包含 3 sheets )。
这是我所做的:
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 sheets ,没有创建“copy_file”,我没有收到任何错误或异常。
有什么想法吗?
您需要打开一个输出流并写入工作簿。确保在此写入操作后关闭工作簿和输出流。
演示:
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();
}
}