easyExcel フレームワークを使用して Java で Excel にカスタム形式を作成する

    一般的な Excel の例では、ヘッダーをフォーマットにしてリスト データを Excel に書き込み、内容は List コレクションを使用して埋められます。今日の要望は少し違っていて、これもエクセルに書く必要があるのですが、最初の内容が一覧表ではなく、概要のような部分があり、その後に表が続いています。一般的な構造は次のとおりです。

    

 

    この要件に対して、一般的な Excel 操作を使用する方法はありません。解決策は、テンプレートを使用してデータを入力することです。Excel テンプレート ファイルを作成し、変更された部分にプレースホルダーを使用する必要があります。

    以下に示すように、テンプレート ファイルを作成します。

    テンプレートでは、先頭部分に地図データを入力できるため、プレースホルダーは {checkTime} になります。ループ リストの次の部分は、{.name}、{.result}、{.desc} で埋められます。

    上記のコード:

    pom.xml

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel-core</artifactId>
	<version>3.2.1</version>
</dependency>

    リストエンティティクラス:


import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class CheckRecord {
    private String name;
    private String result;
    private String desc;
}

    テストクラス:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public class RecordExportTest {

    private static final String RECORD_TEMPLATE = "conf/record-template.xlsx";

    public static void main(String[] args) {
        String filePath = "e:\\record-" + System.currentTimeMillis() + ".xlsx";
        Map<String, Object> summary = new HashMap<>();
        summary.put("checkTime", "2023-04-18");
        summary.put("checkResult", "success");
        summary.put("versionInfo", "v1.0.0");
        List<CheckRecord> list = new ArrayList<>();
        list.add(new CheckRecord("disk status", "success", "磁盘状态"));
        list.add(new CheckRecord("network status", "success", "网络状态"));
        boolean isOk = saveData(filePath, summary, list);
        System.out.println("write excel : " + isOk);
    }

    private static boolean saveData(String filePath, Map<String, Object> summary, List<CheckRecord> list) {
        try (ExcelWriter excelWriter = EasyExcel.write(filePath).withTemplate(RECORD_TEMPLATE).build()) {
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();
            excelWriter.fill(list, fillConfig, writeSheet);
            excelWriter.fill(summary, writeSheet);
            excelWriter.finish();
        }
        return true;
    }
}

    コード要件に従って、前に準備した Record-template.xlsx ファイルをプロジェクトの conf ディレクトリに配置し、サンプルを実行すると、生成される Excel ファイルは次のとおりです。

 

 

    このようなテンプレートの入力により、Excel をより複雑にすることができます。 

おすすめ

転載: blog.csdn.net/feinifi/article/details/130231051