JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签
个人说明:为了简单实现导出数据较少的EXCEL(根据自定义书签模板)
一、替换Excel表格标签方法
```
/**
* 替换Excel模板文件内容
* @param map
* 需要替换的标签建筑队形式
* @param intPath
* Excel模板文件路径
* @param outPath
* Excel生成文件路径
*/
public static boolean replaceSheetsModel(Map map, String intPath, String outPath) {
boolean flag = true;
try {
FileInputStream fs = new FileInputStream(intPath);
//EXCEL xlsx格式与xls格式用的类是不同的,xlsx用的是XSSFWorkbook
XSSFWorkbook workbook = new XSSFWorkbook(fs);
XSSFWorkbook wb = (XSSFWorkbook) workbook;
XSSFSheet sheet;
//由于个人使用是多sheet故获取excel对象后进行sheet遍历,分别对每个sheet里面的标签进行替换
for (int j = 0; j < wb.getNumberOfSheets(); j++) {
sheet = workbook.getSheetAt(j);
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
XSSFRow row = (XSSFRow) rows.next();
if (row != null) {
int num = row.getLastCellNum();
for (int i = 0; i < num; i++) {
XSSFCell cell = row.getCell(i);
if (cell != null) {
cell.setCellType(XSSFCell.CELL_TYPE_STRING);
}
if (cell == null || cell.getStringCellValue() == null) {
continue;
}
String value = cell.getStringCellValue();
if (!"".equals(value)) {
Set<String> keySet = item.keySet();
Iterator<String> it = keySet.iterator();
while (it.hasNext()) {
String text = it.next();
if (value.equalsIgnoreCase(text)) {
cell.setCellValue((String) item.get(text));
break;
}
}
} else {
cell.setCellValue("");
}
}
}
}
}
// 输出文件
FileOutputStream fileOut = new FileOutputStream(outPath);
wb.write(fileOut);
fileOut.close();
} catch (Exception e) {
flag = false;
e.printStackTrace();
}
return flag;
}
```
二、借助main方法进行测试
```
public static void main(String[] args) {
Map map = new HashMap();
map.put("aa", "sheet1");
map.put("bb", "sheet2");
map.put("cc", "sheet3");
map.put("dd", "sheet4");
// test.xlsx为Excel模板文件,sheets.xlsx为程序生成的新文件
replaceSheetsModel(item, "f:\test.xlsx", "f:\\sheets.xlsx");
}
```
三、工具包说明(JAVAPOI)
1.头部核心
```
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
```
2.工具包名称以及版本
poi-ooxml 3.16
如有疑问,若不嫌弃,可私信我,也可一起探讨POI 操作EXCEL表格,相互成长
JAVA POI替换EXCEL模板中自定义标签(XLSX版本)满足替换多个SHEET中自定义标签的更多相关文章
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 在java poi导入Excel通用工具类示例详解
转: 在java poi导入Excel通用工具类示例详解 更新时间:2017年09月10日 14:21:36 作者:daochuwenziyao 我要评论 这篇文章主要给大家介绍了关于在j ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- 替换excel模板中的内容并使用JavaMail发送邮件
由于在公司工作,常年出差,每天都要以日报的形式向公司汇报当天的工作内容.而日报的内容大体上就只有当天工作的主要内容时变化的,其余的都是不变 的. 而我的电脑刚打开excel有点卡,因此决定使用Java ...
- java实现赋值excel模板,并在新文件中写入数据,并且下载
/** * 生成excel并下载 */ public void exportExcel(){ File newFile = createNewFile(); //File newFile = new ...
- poi读取Excel模板并修改模板内容与动态的增加行
有时候我们可能遇到相当复杂的excel,比如表头的合并等操作,一种简单的方式就是直接代码合并(浪费时间),另一种就是写好模板,动态的向模板中增加行和修改指定单元格数据. 1.一个简单的根据模板shee ...
- java poi出excel换行问题
POI操作excel实现换行问题. package jp.co.misumi.mdm.batch.common.jobrunner; import java.io.FileInputStream; i ...
- poi读取excel模板,填充内容并导出,支持导出2007支持公式自动计算
/** * 版权所有(C) 2016 * @author www.xiongge.club * @date 2016-12-7 上午10:03:29 */ package xlsx; /** * @C ...
- POI根据EXCEL模板,修改内容导出新EXCEL (只支持HSSF)
package excelPoiTest; import java.io.File; import java.io.FileInputStream; import java.io.FileOutput ...
随机推荐
- 对包含HttpContext.Current.Cache的代码进行单元测试
假设我们如下代码调用了HttpContext.Current.Cache 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public class CacheManager { ...
- 解决Chrome插件安装时出现的“程序包无效”问题
问题原因,新版的插件头部文件的修改,导致旧版的插件包无法使用,解决方式:解压. 1.把下载后的.crx扩展名的离线Chrome插件的文件扩展名改成.zip或者.rar(如果看不到Chrome插件的扩展 ...
- 网课应该这么刷(油猴Tampermonkey脚本自动刷课)
懒人福利 首先有些人不想学怎么用脚本,满足你们,压缩包解压之后直接登录即可.戳我下载 脚本已经集成好了,登录即可刷课.章节测试还会自动答题呦,正确率高达97%呦. 油猴及脚本安装 油猴的脚本不知可以刷 ...
- cms 环境搭建
一 :安装 JDK: 1.在根目录下新建目录 JDK 2.通过 xftp 导入 jdk 压缩包到 JDK 目录中 jdk-8u144-linux-x64.tar.gz,解压 tar -zxvf jdk ...
- Android 开发技术周报 Issue#278
新闻 Pixel 4a渲染图曝光:或能成新款iPhone SE有力竞争者 Google Play商店为预注册的游戏和应用提供自动安装功能 Android最强单摄Pixel 4a样张曝光:1200万像素 ...
- LeetCode--Unique Email Addresses & Hamming Distance (Easy)
929. Unique Email Addresses (Easy)# Every email consists of a local name and a domain name, separate ...
- Coursera课程笔记----Write Professional Emails in English----Week 2
Let's Start Writing (Week 2) Write Effective Subject Lines be BRIEF 50 characters or less = 5-7 word ...
- 0804_serial port
其实这个程序总的来说是有问题的 仿真图: MacroAndConst.h #ifndef _MACRO_AND_CONST_H_ #define _MACRO_AND_CONST_H_ typedef ...
- JDBC06 其他操作及批处理Batch
灵活指定SQL语句中的变量 -PreparedStatement 对存储过程进行调用 -CallableStatement 运用事务处理 -Transaction 批处理 -Batch -对于大量的批 ...
- 在本地运行Kubernetes的3种主流方式
作者简介 Chris Tozzi,曾担任记者和Linux管理员.对开源技术.敏捷基础架构以及网络问题兴趣浓厚.目前担任高级内容编辑,并且是Fixate IO的DevOps分析师. 原文链接: http ...