-
POI控制模版插入数据5
我现在是利用POI讲一个模版文件的格式放入到了另外一个1.Excel文件里面,然后1.excel文件里面有数据,我想知道我现在怎么向里面插入数据在1.xls最后一行下面增加要求要和第一行样式一样怎么写代码!我用的POI3.7
public class Excel {
public static void main(String[] args) throws Exception {
//新那一个Excel
//writeToBlankExcel();
//根据Excel模板,生成文件并导入数据
writeToExcelTemplet();
}
/**
* 新建excel
* @throws IOException
*/
public static void writeToBlankExcel() throws IOException{
HSSFWorkbook wb = new HSSFWorkbook();
// 建立新HSSFWorkbook对象
HSSFSheet sheet = wb.createSheet("new sheet");
// 建立新的sheet对象
// Create a row and put some cells in it.Rows are 0 based.
HSSFRow row = sheet.createRow((short) 0);
// 建立新行
// Create a cell and put a value in it.
HSSFCell cell = row.createCell(0); //row.createCell(0);
// 建立新cell
cell.setCellValue(1222);// 设置cell的整数类型的值
// Or do it on one line.
row.createCell(1).setCellValue(1.2);
// 设置cell浮点类型的值
row.createCell(2).setCellValue("test");
// 设置cell字符类型的值
row.createCell(3).setCellValue(true);
// 设置cell布尔类型的值
HSSFCellStyle cellStyle = wb.createCellStyle();
// 建立新的cell样式
cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
// 设置cell样式为定制的日期格式
HSSFCell dCell = row.createCell(4);
dCell.setCellValue(new Date());
// 设置cell为日期类型的值
dCell.setCellStyle(cellStyle);
// 设置该cell日期的显示格式
HSSFCell csCell = row.createCell(5);
//csCell.setEncoding(HSSFCell.ENCODING_UTF_16);
// 设置cell编码解决中文高位字节截断
csCell.setCellValue("中文测试_Chinese Words Test");
// 设置背景色
HSSFCellStyle style = wb.createCellStyle();
style.setFillForegroundColor(new HSSFColor.BLACK().getIndex());
style.setFillBackgroundColor(new HSSFColor.ROSE().getIndex());
style.setFillPattern(HSSFCellStyle.SPARSE_DOTS);
HSSFCell cell1 = row.createCell(6);
cell1.setCellStyle(style);
//cell1.setCellValue("X");
//setCellValue 被 cell1.setCellValue(new HSSFRichTextString("aaaaaaaaaaaa")); 替换
cell1.setCellValue(new HSSFRichTextString("aaaaaaaaaaaa"));
// 设置背景色
HSSFCellStyle style1 = wb.createCellStyle();
style1.setFillForegroundColor(new HSSFColor.GREY_40_PERCENT().getIndex());
style1.setFillBackgroundColor(new HSSFColor.GREY_40_PERCENT().getIndex());
style1.setBorderBottom((short) 1);
style1.setBorderTop((short) 1);
style1.setBorderLeft((short) 1);
style1.setBorderRight((short) 1);
/**
* 注意这句代码, style1.setFillPattern, 如果你在你的程序中不设置fill pattern,那么
* 你上面设置的前景色和背景色就显示不出来.
*/
style1.setFillPattern(HSSFCellStyle.SPARSE_DOTS);
HSSFCell cell11 = row.createCell(7);
cell11.setCellValue("X11");
cell11.setCellStyle(style1);
// 数字格式化
HSSFCellStyle st = wb.createCellStyle();
// 建立新的cell样式
st.setDataFormat(HSSFDataFormat.getBuiltinFormat("#,##0"));
HSSFCell cell12 = row.createCell(8);
cell12.setCellValue((double) 10000000);
cell12.setCellStyle(st);
// 设置中西文结合字符串
row.createCell(9).setCellType(HSSFCell.CELL_TYPE_ERROR);
// 建立错误cell
// Write the output to a file
FileOutputStream fileOut = new FileOutputStream("d:/doc/2.xls");
wb.write(fileOut);
fileOut.close();
}
/**
* 导入数据到excel模板中
* @throws IOException
*/
public static void writeToExcelTemplet() throws IOException{
FileInputStream fi = null;
HSSFWorkbook hwb = null;
HSSFRow row = null;//行
HSSFCell cell = null;//列
//1,读取Excel
fi = new FileInputStream("d:/doc/1.xls");
hwb = new HSSFWorkbook(fi);
//2,取得第一个Sheet
HSSFSheet sheet = hwb.getSheetAt(0);
int rows = sheet.getLastRowNum();//行数, base 0
int cols = -1;
System.out.println("rows: " + (rows+1));
for (int i = 0 ; i <= rows ; i++) {//遍历行
row = sheet.getRow(i);//取得行
cols = row.getLastCellNum();//取得最后一列有序号 base 1
System.out.print("第["+ (i+1) +"]行有["+ (cols) +"]列(base 1): ");
for (int j = 0 ; j < cols ; j++) {//遍历列
cell = row.getCell(j);
Object value = null;
if (null != cell) {
switch (cell.getCellType()) {
case HSSFCell.CELL_TYPE_NUMERIC: // 数值型
if (HSSFDateUtil.isCellDateFormatted(cell)) {
//如果是date类型则 ,获取该cell的date值
value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString();
System.out.print(value);
}else{//纯数字
value = cell.getNumericCellValue() + 1;//数字加一
}
System.out.print(value);
cell.setCellValue((Double)value);
break;
/* 此行表示单元格的内容为string类型 */
case HSSFCell.CELL_TYPE_STRING: // 字符串型
value = cell.getRichStringCellValue().toString();
System.out.print(value);
break;
case HSSFCell.CELL_TYPE_FORMULA://公式型
//读公式计算值
value = String.valueOf(cell.getNumericCellValue());
if(value.equals("NaN")){//如果获取的数据值为非法值,则转换为获取字符串
value = cell.getRichStringCellValue().toString();
}
//cell.getCellFormula();读公式
System.out.print(value);
break;
case HSSFCell.CELL_TYPE_BOOLEAN://布尔
value = " "+ cell.getBooleanCellValue();
System.out.print(value);
break;
/* 此行表示该单元格值为空 */
case HSSFCell.CELL_TYPE_BLANK: // 空值
value = "";
System.out.print(value);
break;
case HSSFCell.CELL_TYPE_ERROR: // 故障
value = "";
System.out.print(value);
break;
default:
value = cell.getRichStringCellValue().toString();
System.out.print(value);
}
}
}
System.out.println();
}
sheet.protectSheet(new String("333"));
hwb.write(new FileOutputStream("d:/doc/2_test_excel_结果.xls"));
}
}
2012年7月12日 10:11
目前还没有答案
相关推荐
本教程将深入讲解如何利用Apache POI的XWPF模块结合Word模板中的书签,实现数据的动态插入,从而创建个性化的Word文档。 首先,我们需要理解Apache POI的XWPF模块。XWPF(XML Word Processing)是POI项目的一部分,...
标题中的“poi包 EXCEL模板读取填数据并导出以及在模板某行插入新的行”涉及到了Apache POI库的使用,这是一个Java API,专门用于处理Microsoft Office格式的文件,如Excel。以下是对这个主题的详细解释: Apache ...
poi实现导入数据到excel模板,本来想上传poi的jar包,谁知限制我只能上传15M的文件,汗。。。。。 不知道啥时候开始要分了... 代码见: https://github.com/thisisnohi/nohi-doc poi实现导入数据到excel模板。...
在本主题中,我们将深入探讨如何使用Java POI流处理Word模板,插入文本、表格和图片,以及生成新的Word报告。 1. **Java POI流处理Word模板**: - POI API提供了`XWPFDocument`类来处理`.docx`文件,这是Word 2007...
在这个场景中,我们关注的是如何利用Java POI库通过Word模板生成包含特定文本、表格和图片的报告。 首先,我们需要了解Java POI中的XWPFDocument类,它是用来处理.docx文件的。XWPFDocument可以读取、修改和创建...
本篇文章将深入探讨如何利用POI库在Word文档中进行模板替换以及循环插入表格的操作。 首先,我们需要理解Apache POI的工作原理。POI提供了HWPFOI(用于处理老版的.doc文件)和XWPF(用于处理新版的.docx文件)两个...
例如,如果要在某列批量插入数据,可以遍历行,对每个单元格设置新的值: ```java List<String> dataList = ... // 数据列表 for (int i = 0; i (); i++) { XSSFRow row = sheet.getRow(i + 1); // 假设第一行为...
在本文中,我们将深入探讨如何使用Apache POI在Word文档中插入文本和图片,这对于创建动态报告模板尤其有用。 一、Apache POI基础 Apache POI提供了一系列接口和类,用于读写微软的Office文件格式。对于Word处理,...
2. **循环列表**:要实现循环列表,你需要遍历一个数据集合(如ArrayList或LinkedList),并在每次迭代时将数据插入到模板中适当的位置。这可以通过创建新的段落或合并字段来完成,确保每个迭代都添加到正确的位置。...
应公司业务要求,需要在world文档中生成表格,最开始同事使用的freemarker操作xml标签可以实现world中插入表格, 但是每次修改模板需要改xml文件,几万行中去找对应的标签然后修改,容易找错位置并且电脑非常卡,相当麻烦;...
模版生成通常涉及预先定义好的Word文档,其中包含占位符,这些占位符在程序运行时会被动态替换为实际数据。 1. **使用POI读取和编辑Word模板**: - 初始化`Document`对象:首先,你需要加载Word模板文件,这可以...
使用java Apache poi 根据word模板生成word报表 仅支持docx格式的word文件,大概是word2010及以后版本,doc格式不支持。 使用说明:https://blog.csdn.net/u012775558/article/details/79678701
例如,如果你的Excel数据是一系列的员工信息,模板中可能有一个占位符"{name}"用于插入员工姓名: ```java import org.apache.poi.xwpf.usermodel.*; // ... XWPFDocument doc = new XWPFDocument(); ...
3. **定义数据源**:确定你要插入的数据源。这可以是数据库查询结果、CSV文件或者其他任何可以迭代的数据结构。 4. **循环处理**:遍历数据源的每一行,为每一条数据创建一个新的表格行。使用`XWPFTable`的`...
在"poi操作word模板"的场景中,我们主要关注如何使用Apache POI库来自动化填充Word文档模板,这在批量生成报告、合同或其他需要标准化格式但需个性化数据的文档时非常有用。 首先,理解Apache POI的基本概念是必要...
实现了POI根据模板导出word,实现文字、表格、图表的替换生成。支持生成多种结构的表格、图表,关键代码都添加了注释,简单易懂。 其中表格和图表都写了两种实现方式,既可以只传简单的参数生成多个同结构的表格和...
在处理模板导出时,通常我们会选择XSSFWorkbook来创建.xlsx文件,因为它是基于XML的,更适合于数据的动态插入和更新。 1. **创建Excel模板**:模板是预先设计好的Excel文件,包含了静态格式和样式。你可以使用...
4. **插入数据**:使用POI API动态插入数据到模板中,替换占位符。可以使用`setCellValue()`方法为单元格设置值,`insertNewRow(int index)`创建新行,`createCellStyle()`创建新的样式,`applyCellStyle(CellStyle ...
结合FreeMarker和Apache POI,我们可以创建一个模板Word文档,其中包含占位符,然后使用POI读取和填充这个模板,同时插入图片,生成最终的动态Word文档。以下是这个过程的大致步骤: 1. **创建模板**: 使用...