20

基本的な質問:POIで使用するExcelテンプレートを読み込んで、XLSファイルに保存するにはどうすればよいですか?

編集:

答えは次のとおりです。

FileInputStream inputStream = new FileInputStream(new File(templateFile));
Workbook workbook = new HSSFWorkbook(inputStream);

(テンプレートをワークブックとしてロードしてから、ワークブックをXLSファイルとして別の場所に書き込むだけです。)

4

6 に答える 6

15

テンプレートとして機能する.xlsを直接ロードし、それを変更することができます。

POIFSFileSystem fs = new POIFSFileSystem(
                new FileInputStream("template.xls"));
HSSFWorkbook wb = new  HSSFWorkbook(fs, true);

xlsをロードし、その構造を保持します(マクロを含む)。その後、変更できます。

HSSFSheet sheet1 = wb.getSheet("Data");
...

そしてそれを保存します。

FileOutputStream fileOut = new FileOutputStream("new.xls"); 
wb.write(fileOut);
fileOut.close();

お役に立てれば。

于 2009-04-03T15:01:21.097 に答える
5

内部テンプレートをリソースとして使用することもできます。

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();
于 2012-01-16T01:38:17.290 に答える
3

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");

を作成して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} |
------------------------------------
于 2015-11-04T22:21:21.670 に答える
2

Excel ファイルの.xlsx場合は、次を使用します。

FileInputStream inputStream = new FileInputStream(new File("template.xlsx"));
        @SuppressWarnings("resource")
        Workbook wb = new XSSFWorkbook(inputStream);  
        Sheet sheet = wb.getSheet("sheet1");
于 2016-12-14T13:46:46.507 に答える