工程目录结构以及所需的jar包如下:
工具:poi-2.0-RC2-20040102.jar(注意:这里并没有使用本机自带的Excel2007制作模板)
现在很多工具都要版本对应才能使用,eg:在使用poi-2.0-RC2时 必须使用老版本的Excel新建xls文件,Excel2007
新建的Excel是".xlsx"结尾的,不能使用poi-2.0-RC2。
又比如:在使用itext1.3时,使用现在普遍存在的adobe acrobat7.0以上的版本制作的模板都不行,但使用itext2.0就可以解决中文无法显示(或乱码的问题)
如果你电脑上安装的是Excel2007的话,可能就比较麻烦啦!当然也不是必须使用Excel来建立模板
我们可以这样做:使用poi自身来建立一个.xls文件,这个文件肯定是符合poi版本的
1.fos = new FileOutputStream(file); 直接建立一个xls文档
2.用如下方式
package com.excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFCell; import java.io.FileOutputStream; /** * 利用POI API创建Excel文档 * @author fshitd88 * */ public class CreateXL { /** Excel 文件要存放的位置,假定在D盘下。 * 现在D盘下还没有excel文件,通过下面成程序可以创建Excel文件 * */ public static String outputFile = "D:\\test.xls"; public static void main(String argv[]) { try { // 创建新的Excel 工作簿 HSSFWorkbook workbook = new HSSFWorkbook(); // 在Excel工作簿中建一工作表,其名为缺省值 // 如要新建一名为"效益指标"的工作表,其语句为: // HSSFSheet sheet = workbook.createSheet("效益指标"); HSSFSheet sheet = workbook.createSheet(); // 在索引0的位置创建行(最顶端的行) HSSFRow row = sheet.createRow((short) 0); // 在索引0的位置创建单元格(左上端) HSSFCell cell = row.createCell((short) 0); // 定义单元格为字符串类型 cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue("高红成");//写入中文有问题 //解决中文件乱码 HSSFCell cell1 = row.createCell((short) 1); cell1.setEncoding((short) 1);//解决中文乱码问题 // 在单元格中输入一些内容 cell1.setCellValue("高伟刚");//写入中文有问题 // 新建一输出文件流 FileOutputStream fOut = new FileOutputStream(outputFile); // 把相应的Excel 工作簿存盘 workbook.write(fOut); fOut.flush(); // 操作结束,关闭文件 fOut.close(); System.out.println("文件生成..."); } catch (Exception e) { System.out.println("已运行 xlCreate() : " + e); } } }
修改Excel文件第一行,就形成了一个简单的模板了
package com.excel; import java.io.File; import java.sql.*; import java.util.*; import org.apache.poi.hssf.usermodel.*; //import com.ageon_cnooc.common.util.POIFactoryImpl; import org.apache.poi.poifs.filesystem.POIFSFileSystem; import com.vo.Agentinfo; import java.io.FileInputStream; import java.io.FileOutputStream; //v1.01 20070423 jasonzhu 修改职级为CA的为LP职级 public class CardExcel { private static final int COL_POS = 0; private static final int ROW_POS = 1; public static void read(List<Agentinfo> agentinfos) { // 导出的Excel 名称 String toFileName = "D:\\report" + "\\cardreport\\" + "agCard_gaoweigang" + ".xls"; //Excel模板(即第一行添加了相应的字段的Excel) String templateName = "D:/report" + "/cardreport/" + "agCardTemplate.xls"; POIFSFileSystem pfs = null; HSSFWorkbook workbook = null; HSSFSheet sheet = null; HSSFRow hr = null; HSSFCell cell = null; FileOutputStream fos = null; PreparedStatement pstmt = null; ResultSet rs = null; // HSSFCellStyle cs=null; int rowPos = ROW_POS; int colPos = 0; try { // xls定义 File file = new File(templateName); // fos = new FileOutputStream(file); //创建一个xls文件 ,注意不是xlsx文件,新建的是xlsx文件 FileInputStream fis = new FileInputStream(file); pfs = new POIFSFileSystem(fis); workbook = new HSSFWorkbook(pfs); // TM报表 sheet = workbook.getSheetAt(0); rowPos = ROW_POS; List cardStats = agentinfos; for (int i = 0; i < cardStats.size(); i++) { colPos = COL_POS; hr = sheet.createRow(rowPos); cell = hr.createCell((short) (colPos)); // cell.setCellStyle(cs); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgbegdate()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentId()); // cell.setHidden(true); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentname()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)) .getAgidno()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentaddress()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentpost()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)) .getAgentphone()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)) .getAgentsubphone()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)) .getAgentmobile()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgentmail()); colPos = colPos + 1; cell = hr.createCell((short) (colPos)); cell.setEncoding((short) 1); cell.setCellValue(((Agentinfo) cardStats.get(i)).getAgarea()); rowPos = rowPos + 1; cell = null; hr = null; } // test // HSSFCellStyle cs=null; // rowPos = rowPos + 1; // cell.setCellStyle(cs); // cs.setHidden(true); // test fos = new FileOutputStream(new File(toFileName)); workbook.write(fos); fos.flush(); } catch (Exception t) { t.printStackTrace(); } finally { try { if (fos != null) { fos.close(); } if (rs != null) { rs.close(); } if (pstmt != null) { pstmt.close(); } } catch (Exception e) { e.printStackTrace(); } workbook = null; pfs = null; } } /* String agbegdate; this.agentId = agentId; this.agentname = agentname; this.agidno = agidno; this.agentaddress = agentaddress; this.agentpost = agentpost; this.agentphone = agentphone; this.agentsubphone = agentsubphone; this.agentmobile = agentmobile; this.agentmail = agentmail; this.agarea = agarea; } */ public static void main(String[] args) { List<Agentinfo> agentinfos = new ArrayList<Agentinfo>(); Agentinfo agentinfo1 = new Agentinfo("20140108", "0000000066", "高伟刚", "gaoweigang","上海某某区", "20000", "154817191469", "95814154", "13817191469", "1245508765@qq.com", "shanghai"); agentinfos.add(agentinfo1); Agentinfo agentinfo2 = new Agentinfo("20140109", "0000000067", "牛海龙", "liuhailong","上海某某区", "20000", "15817191239", "9555222585", "13817191469", "138171921459@163.com", "shanghai"); agentinfos.add(agentinfo2); read(agentinfos); } }
相关推荐
标题中的“`java+poi+Excel模板`”指的是使用Java编程语言,结合Apache POI库来处理Microsoft Excel模板,以生成或编辑Excel报表的过程。Apache POI是一个流行的开源项目,它允许开发者使用Java读写Microsoft Office...
springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式Excel模板,完整项目,导出即用。springboot+poi导出指定格式...
因此,我们可以预先设计好Excel模板,包含所有需要的格式和样式,然后通过Java程序将数据填充到模板中,生成最终的报表。这种方法能够显著提高开发效率,同时确保报表的样式一致性。 3. 设计步骤 (1) 创建Excel报表...
《使用Java+POI+模板技术生成复杂Excel报表》 在信息技术领域,数据的展示和分析是至关重要的,Excel作为一款强大的电子表格工具,被广泛应用于数据的整理和报表制作。然而,当需要自动化生成复杂的Excel报表时,...
而`导入的模板`可能是预设的Excel模板,用户按照这个模板填写数据,以便于系统正确解析和导入。 在实际开发中,可能还需要处理一些细节问题,比如数据验证、错误处理、多线程导入优化等。此外,为了提高用户体验,...
FreeMarker和Apache POI是两种在Java开发中广泛使用的工具,它们在处理文档生成和操作方面各有专长。本文将详细介绍这两个库如何协同工作来创建带有图片的Word文档。 **FreeMarker** FreeMarker是一个模板引擎,...
本篇将深入探讨如何利用Apache POI来操作Excel模板,以及如何读取数据并将其填充到新生成的文件中,最终提供下载。 首先,你需要在项目中引入Apache POI的依赖。如果你使用的是Maven,可以在pom.xml文件中添加以下...
在本文中,我们将深入探讨如何使用Java POI库根据已有的Excel模板生成新的Excel文件。 首先,理解“模板”在Excel中的概念非常重要。模板通常包含预设的格式、样式、公式和数据结构,可以作为创建新文件的基础。在...
在Java编程领域,Apache POI库是一个非常流行的API,它允许开发者读取、写入以及修改Microsoft Office格式的文件,包括Excel。本篇文章将详细探讨如何利用POI库基于模板来导出Excel文档。 首先,我们需要理解Apache...
本教程将详细讲解如何利用Apache POI库来实现“使用POI向Excel模板动态添加内容”的功能。 首先,让我们了解Apache POI的基本概念。POI是Portable Object Interface的缩写,它提供了API,使得开发人员可以处理...
Java POI下载Excel模板 Excel带有下拉框的模板,并有详细注释,生成exlcel的下拉框,必填项标红,数字栏位防止科学计数法,并设置Excel标题样式
总结起来,使用Java结合Apache POI处理Excel模板,可以灵活地进行数据的填充和格式化,无论是简单的单个值设置,还是复杂的循环处理,都能满足需求。虽然代码可能不够完美,但通过不断学习和实践,我们可以逐渐优化...
在本文中,我们将深入探讨如何使用SpringBoot和Apache POI库来导出指定格式的Excel模板。Apache POI是Java领域广泛使用的库,用于读写Microsoft Office格式的文件,其中包括Excel(.xlsx 和 .xls)文件。SpringBoot...
在Java开发中,Apache POI库是一个非常流行的用于读写Microsoft Office格式文件的库,包括Excel。本篇文章将深入探讨如何使用Apache POI基于模板来导出Excel文件,以满足数据展示和报告生成的需求。 首先,我们需要...
在Java中,我们可以创建一个Excel模板文件,然后使用POI库根据业务逻辑动态替换模板中的占位符。 1. **安装Apache POI**: 在项目中添加Apache POI依赖。如果你使用Maven,可以在pom.xml文件中加入以下依赖: ```...
这个过程涉及到对Excel模板的理解、读取、修改以及最终的保存。 首先,理解模板文件是关键。一个.xlsx模板文件实际上是由一系列XML文件组成,存储在ZIP压缩包内,这也就是.xslx文件的本质。模板中的单元格、公式、...
在Java Web开发中,Struts2是一个非常流行的MVC框架,它简化了处理HTTP...总之,通过Struts2和Apache POI的结合,开发者可以方便地在Web应用中提供数据导出为Excel的功能,这对于数据分析、报表生成等场景非常实用。
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...