문제

기본 질문 : 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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top