根据excel模板里设置指定的num0,num1,num2,num3.然后替换成想到的内容,生成新的excel文件
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * Writer: fuanyu * Date : 14-12-26 * Time : 上午9:43 */ @SuppressWarnings("unchecked") public class TestExcel { /** * 替换Excel模板文件内容 * @param item 文档数据 * @param sourceFilePath Excel模板文件路径 * @param targetFilePath Excel生成文件路径 */ public static boolean replaceModel(Map item, String sourceFilePath, String targetFilePath) { boolean bool = true; try { POIFSFileSystem fs =new POIFSFileSystem(new FileInputStream(sourceFilePath)); HSSFWorkbook wb = new HSSFWorkbook(fs); HSSFSheet sheet = wb.getSheetAt(0); Iterator rows = sheet.rowIterator(); while(rows.hasNext()){ HSSFRow row = (HSSFRow) rows.next(); if(row!=null) { int num = row.getLastCellNum(); for(int i=0;i<num;i++) { HSSFCell cell= row.getCell(i); if(cell!=null) { cell.setCellType(HSSFCell.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(targetFilePath); wb.write(fileOut); fileOut.close(); } catch (Exception e) { bool = false; e.printStackTrace(); } return bool; } public static void main(String[] args) { Map item = new HashMap(); item.put("num0","000"); item.put("num1","1"); item.put("num2","2"); item.put("num3","3"); item.put("num4","4"); item.put("num5","5"); item.put("num6","6"); //d:\\template.xls为Excel模板文件,d:\\test.xls为程序根据Excel模板文件生成的新文件 replaceModel(item, "d:\\template.xls", "d:\\test.xls"); } }
相关推荐
要替换文件内容中的键值对,首先需要读取文件内容到字符串,然后使用正则表达式或其他文本处理方法进行查找替换。假设我们有如下文件内容: ``` key1=value1 key2=value2 ... ``` 我们可以遍历读取到的Excel...
1. **数据类型处理**:如果读取到的数据是字符串类型,则需要对其进行特殊处理,如去除前后空格、替换单引号等,以便于正确地插入到数据库中。 ```java String str = sheet.getCell(0, 1).getContents().trim()....
本篇文章将深入探讨如何使用Java实现“边读边写”Excel的机制,特别是结合数据库中的数据List填充到Excel指定位置,并讨论替换字符串的相关操作。 首先,Java中读写Excel文件主要依赖于第三方库,如Apache POI和...
这个过程涵盖了多个知识点,包括字符串操作、正则表达式、数据结构、数据绑定以及Excel文件的读写。 首先,字符串解析通常会用到编程语言内置的字符串函数,例如Python的`split()`或C#的`Split()`方法,来分割字符...
在Java编程中,操作Excel文件是一项常见的任务,特别是在数据分析、报表生成或数据导入导出等场景。Java Excel API(通常指的是jxl库)提供了一种简单的方式来读取和写入Excel文件,支持.xls格式(Excel 2003及之前...
// 定义单元格为字符串类型 cell.setCellType(HSSFCell.CELL_TYPE_STRING); // 在单元格中输入一些内容 cell.setCellValue("增加值"); // 新建一输出文件流 FileOutputStream fileOut = new FileOutputStream...
每个单元格的数据类型可能不同,如字符串、数字或日期,因此需要处理各种情况: ```java for (int rowIndex = 0; rowIndex (); rowIndex++) { for (int colIndex = 0; colIndex (); colIndex++) { Cell cell = ...
- 使用Cell对象的`setCellValue(Object value)`方法设置单元格的值,value可以是字符串、数字、日期等。 6. **模板处理**: - 如果有模板,可以先读取模板文件,然后替换其中的数据单元格。 - 使用`...
- **文本文件输出**:在处理文本数据时,可以使用“字符串替换”步骤对字段内容进行替换,以满足输出格式要求。 8. JavaScript 和 Java 脚本: - **JavaScript步骤**:允许用户编写自定义的JavaScript代码进行...
对于单元格数据的读取,我们需要根据单元格类型(CellType)进行不同的处理,例如数值、字符串、日期等: ```java switch (cell.getCellType()) { case NUMERIC: System.out.println(cell.getNumericCellValue())...
- **字符串工具类**:包含字符串的各种操作,如空判断、拼接、截取、替换、编码解码等。 - **随机数工具类**:可以生成各种类型的随机数,包括整数、浮点数、指定范围内的随机数,甚至自定义概率分布的随机数。 2...
每个单元格可以是数值、字符串、日期或其他类型。 3. **读取Excel**:要读取Excel文件,首先创建`Workbook`实例,然后获取对应的`Sheet`,最后遍历`Row`和`Cell`来读取数据。以下是一个简单的示例: ```java File...
3. **数据解析**: 读取到的每个单元格数据可能需要进行类型转换,因为POI会将所有数据作为字符串返回。例如,日期、数字和布尔值都需要特殊处理。可以使用`CellType`枚举来判断单元格类型,并进行相应的转换。 4. *...
2. **字符串分割**:使用`split()`函数,可以按照指定的分隔符将字符串切割成多个子串,如Python中的用法。 3. **正则表达式分隔**:通过正则表达式进行复杂的分隔操作,如Java的`Pattern`和`Matcher`,Python的`re...
每个Cell可以包含各种数据类型,如字符串、数字、日期等。 - **写入数据**:通过Cell的setCellValue方法,将数据写入到Cell中。 - **保存文件**:最后,你需要将Workbook对象写入到文件系统中,通常使用...
子类`Excel2007WriterImpl.java`可能继承了这个抽象类,并实现了具体的写入逻辑,包括替换Sheet的操作。 在处理大数据量时,一次性加载所有数据可能导致内存溢出。为了解决这个问题,可以采用流式处理或分批写入...
Java操作Excel主要是通过Apache POI库来实现的。Apache POI是一个开源项目,它提供了读取和写入Microsoft Office格式文件的能力,包括Excel。在Java中,POI库是处理Excel文件的常用工具,可以创建、修改、读取Excel...
对于字符串,同样适用此方法。 4. **处理网络图片**:如果你需要在Excel中插入网络图片,可以使用`Pictures`接口。首先,你需要下载图片到本地,然后将其上传到工作簿中,最后在单元格中引用该图片。具体步骤包括:...
接下来,我们遍历每一行(Row)和每一个单元格(Cell),根据单元格的类型(如字符串、数字、布尔等)提取数据,并打印出来。 如果你的Excel文件包含日期或其他特殊类型的单元格,可能需要额外的处理。例如,对于...
运行上述Java代码后,输出的HTML字符串将替换掉模板中的VTL变量,形成如下内容: ```html 欢迎,张三! 你好,你今年已经30岁了。 ``` 这就是Java Velocity模板引擎的基本使用方法和核心概念。它通过简单易懂...