Java通過模板替換實(shí)現(xiàn)excel的傳參填寫方式
更新時(shí)間:2025年12月11日 14:09:39 作者:yui方木
文章介紹了使用Java模板替換功能來實(shí)現(xiàn)Excel文件的傳參填寫,通過將模板中的占位符(如$)進(jìn)行轉(zhuǎn)義和替換,可以動(dòng)態(tài)生成包含具體數(shù)據(jù)的Excel文件,這種方法適用于需要批量生成帶有個(gè)性化數(shù)據(jù)的Excel文檔的場(chǎng)景
Java通過模板替換實(shí)現(xiàn)excel傳參填寫
以模板為例子

將上面$轉(zhuǎn)義的內(nèi)容替換即可
package com.gxuwz.zjh.util;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.io.IOException;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.stereotype.Component;
/**
* @author FangZenglin
* @date 2023年10月12日17:27
*/
@Component
public class ExcelZiDongTian {
public void xieexcel_qitajia(String exceldizhi,
String danwei,
String xingming,
String date,
String zhiwu,
String shiyou,
String leixing,
String baocundizhi) throws IOException {
FileInputStream templateFile = new FileInputStream(exceldizhi);
Workbook workbook = new XSSFWorkbook(templateFile);
templateFile.close();
Sheet sheet = workbook.getSheetAt(0);
Map<String, String> data = new HashMap<>();
data.put("danwei", danwei);
data.put("xingming", xingming);
data.put("date", date);
data.put("zhiwu", zhiwu);
data.put("shiyou", shiyou);
data.put("leixing", leixing);
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = cell.getStringCellValue();
if (cellValue.startsWith("$")) {
String key = cellValue.substring(1);
if (data.containsKey(key)) {
cell.setCellValue(data.get(key));
}
}
}
}
FileOutputStream outputStream = new FileOutputStream(baocundizhi);
workbook.write(outputStream);
workbook.close();
}
public void xieexcel_nianjia(String exceldizhi,
String danwei,
String shoucigongzuonianyue,
String gongling,
String quxiang,
String xingming,
String date,
String zhiwu,
String leixing,
String baocundizhi) throws IOException {
FileInputStream templateFile = new FileInputStream(exceldizhi);
Workbook workbook = new XSSFWorkbook(templateFile);
templateFile.close();
Sheet sheet = workbook.getSheetAt(0);
Map<String, String> data = new HashMap<>();
data.put("danwei", danwei);
data.put("xingming", xingming);
data.put("date", date);
data.put("zhiwu", zhiwu);
data.put("quxiang", quxiang);
data.put("shoucigongzuonianyue",shoucigongzuonianyue);
data.put("gongling",gongling);
data.put("leixing", leixing);
for (Row row : sheet) {
for (Cell cell : row) {
String cellValue = cell.getStringCellValue();
if (cellValue.startsWith("$")) {
String key = cellValue.substring(1);
if (data.containsKey(key)) {
cell.setCellValue(data.get(key));
}
}
}
}
FileOutputStream outputStream = new FileOutputStream(baocundizhi);
workbook.write(outputStream);
workbook.close();
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java依賴-關(guān)聯(lián)-聚合-組合之間區(qū)別_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java依賴-關(guān)聯(lián)-聚合-組合之間區(qū)別理解,依賴關(guān)系比較好區(qū)分,它是耦合度最弱的一種,下文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2017-08-08
Java實(shí)現(xiàn)EasyCaptcha圖形驗(yàn)證碼的具體使用
Java圖形驗(yàn)證碼,支持gif、中文、算術(shù)等類型,可用于Java Web、JavaSE等項(xiàng)目,下面就跟隨小編一起來了解一下2021-08-08
Java 線程狀態(tài)和等待喚醒機(jī)制和線程池的實(shí)現(xiàn)
這篇文章主要介紹了Java 線程狀態(tài)和等待喚醒機(jī)制和線程池的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03
Spring context:component-scan的使用及說明
這篇文章主要介紹了Spring context:component-scan的使用及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09

