Apache Poi와 함께 Excel 템플릿 사용
-
23-08-2019 - |
문제
기본 질문 : POI와 함께 사용하기 위해 Excel 템플릿을로드 한 다음 XLS 파일에 저장하려면 어떻게해야합니까?
편집하다:
정답은:
FileInputStream inputStream = new FileInputStream(new File(templateFile));
Workbook workbook = new HSSFWorkbook(inputStream);
(템플릿을 통합 문서로로드 한 다음 다른 곳에서 XLS 파일로 통합 문서를 작성하십시오.)
해결책
POI를 사용하여 표준 .xls로로드하여 수정 한 다음 저장을 시도 했습니까?
이것은 POI 생성 .XL에 매크로를 삽입하는 데 사용한 접근법입니다. 매크로로 파일을 생성 한 다음 (.xls로서) 파일을 내 앱에로드하고 데이터로 채우고 새로 만들어진 .xls로 저장합니다. 모든 것이 잘 작동했습니다.
다른 팁
템플릿 역할을하는 .xl을 직접로드하고 수정할 수 있습니다.
POIFSFileSystem fs = new POIFSFileSystem(
new FileInputStream("template.xls"));
HSSFWorkbook wb = new HSSFWorkbook(fs, true);
구조를 보존하여 XL을로드합니다 (매크로 포함). 그런 다음 수정할 수 있습니다.
HSSFSheet sheet1 = wb.getSheet("Data");
...
그런 다음 저장하십시오.
FileOutputStream fileOut = new FileOutputStream("new.xls");
wb.write(fileOut);
fileOut.close();
도움이 되었기를 바랍니다.
내부 템플릿을 리소스로 사용할 수도 있습니다.
InputStream fis = ChartSample.class.getResourceAsStream("/templates.xls");
HSSFWorkbook wb = new HSSFWorkbook(fis);
fis.close();
HSSFSheet sh = wb.getSheetAt(0);
//Here you go
그리고 그것을 저장하십시오 :
out = new FileOutputStream("./new.xls");
wb.write(out);
out.close();
XLS 템플릿에서 XLS 파일을 만들 수 있습니다.
그러나 이렇게하려면 템플릿을 사용할 때마다 템플릿 사본을 만들어야합니다. 그렇지 않은 경우 원래 템플릿을 편집합니다 (원하지 않는 것).
따라서 먼저 템플릿 파일을 가져와야합니다.
URL url = Thread.currentThread().getContextClassLoader().getResource("templates/template.xls");
File file = new File(url.getPath());
템플릿 파일 복사 :
try (FileOutputStream fileOutputStream = new FileOutputStream("/home/jake/fileCopiedFromTemplate.xls")) {
Files.copy(file.toPath(), fileOutputStream);
Workbook workbook = new HSSFWorkbook();
workbook.write(fileOutputStream);
}
새 복사 파일에 액세스하십시오.
FileInputStream inp = new FileInputStream("/home/jake/fileCopiedFromTemplate.xls");
a Workbook
, 새 파일에 쓸 수 있습니다.
Workbook workbook = WorkbookFactory.create(inp);
통합 문서에 쓴 후 :
try (FileOutputStream fileOut = new FileOutputStream("/home/jake/fileCopiedFromTemplate.xls")) {
workbook.write(fileOut);
}
XLS 템플릿 파일을 생성하는 팁은 채우려는 위치를 현지화 할 수있는 변수로 템플릿을 표시하는 것입니다. 처럼:
------------------------------------
| | Columna A | Column B |
------------------------------------
| 1 | Some description |
------------------------------------
| 2 | {person.name} | {person.age} |
------------------------------------
Excel-Files와 함께 .xlsx
다음을 사용하십시오.
FileInputStream inputStream = new FileInputStream(new File("template.xlsx"));
@SuppressWarnings("resource")
Workbook wb = new XSSFWorkbook(inputStream);
Sheet sheet = wb.getSheet("sheet1");
2007+ 형식으로 저장하려면 maven pom.xml에 poi-ooxml 종속성을 추가하여 xssf를 사용할 수 있습니다.
이 XMLS에 요약 시트가있는 Template.xlsx 파일이 있고 특정 셀을 변경하려는 경우 다음과 같이 수행 할 수 있습니다.
XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream("template.xlsx"));
FileOutputStream fileOut = new FileOutputStream("new.xlsx");
XSSFSheet sheet1 = wb.getSheet("Summary");
XSSFRow row = sheet1.getRow(15);
XSSFCell cell = row.getCell(3);
cell.setCellValue("Bharthan");
wb.write(fileOut);
log.info("Written xls file");
fileOut.close();