- 浏览: 135782 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
di1984HIT:
学习了,学习了~
工作流引擎activiti 获取下一节点 -
q418584383:
现在这个只能获取到当前页行号 如果是翻页后的行号 怎么获取啊。 ...
easyui datagrid 获取行号 -
it_palmer:
好用
Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法 -
wang_kejian:
其实可以用迭代循环去做
工作流引擎activiti 获取下一节点 -
wang_kejian:
其实你只是针对网关进行了判断,没有针对子流程进行判断,如果存在 ...
工作流引擎activiti 获取下一节点
import java.sql.SQLException; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFPrintSetup; import org.apache.poi.hssf.usermodel.HSSFRichTextString; 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.hssf.util.CellRangeAddress; public class Excel { private HSSFWorkbook wb = null; private HSSFSheet sheet = null; private HSSFRow row = null; private HSSFCell cell = null; private HSSFCellStyle titleStyle = null; private HSSFCellStyle headStyle = null; private HSSFCellStyle bodyStyle = null; private int num = 0; private int headLength = 0; public Excel() { wb = new HSSFWorkbook(); sheet = wb.createSheet(); sheet.setDefaultColumnWidth(14); sheet.setDefaultRowHeight((short)20); //打印设置 HSSFPrintSetup hps = sheet.getPrintSetup(); hps.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE); // 设置A4纸 hps.setLandscape(true); // 将页面设置为横向打印模式 // sheet.setHorizontallyCenter(true); // 设置打印页面为水平居中 // sheet.setVerticallyCenter(true); // 设置打印页面为垂直居中 //冻结第一行和第二行 sheet.createFreezePane( 0, 2, 0, 2 ); init(); } /** * 初始化样式 */ private void init() { titleFont(); headFont(); bodyFont(); } /** * 设置标题样式 * */ private void titleFont() { HSSFFont titleFont = wb.createFont(); titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); titleFont.setFontName("宋体"); titleFont.setFontHeightInPoints((short) 18); titleStyle = wb.createCellStyle(); titleStyle.setFont(titleFont); // titleStyle.setBorderTop((short)1); // titleStyle.setBorderRight((short)1); titleStyle.setBorderBottom((short)1); // titleStyle.setBorderLeft((short)1); titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); } /** * 设置head样式 * */ private void headFont() { HSSFFont headFont = wb.createFont(); headFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); headFont.setFontName("宋体"); headFont.setFontHeightInPoints((short) 11); headStyle = wb.createCellStyle(); headStyle.setFont(headFont); headStyle.setBorderTop((short)1); headStyle.setBorderRight((short)1); headStyle.setBorderBottom((short)1); headStyle.setBorderLeft((short)1); headStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); } /** * 设置body样式 * */ private void bodyFont() { HSSFFont bodyFont = wb.createFont(); bodyFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); bodyFont.setFontName("宋体"); bodyFont.setFontHeightInPoints((short) 9); bodyStyle = wb.createCellStyle(); bodyStyle.setFont(bodyFont); bodyStyle.setBorderTop((short)1); bodyStyle.setBorderRight((short)1); bodyStyle.setBorderBottom((short)1); bodyStyle.setBorderLeft((short)1); bodyStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); bodyStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); } /** * 生成Excel主方法 * @param xml :包括title和head的内容和设置 * @param list :内容 * @param fit :是否需要宽度自适应 * @return HSSFWorkbook * @throws SQLException */ public HSSFWorkbook createWorkBook(final ExcelHeadXML xml, final List<Object[]> list, boolean fit) throws SQLException { createTop(xml); /* List<Object[]> list1 = new LinkedList<Object[]>(); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); list1.add(new Object[]{"000003","武汉市XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX公司","XXXXXX","VVVVVVVV","dddd","23","2009-04-04"}); createBody(list1,true); */ createBody(list,true); //宽度自适应 if(fit){ for(int i=0; i<headLength; i++){ sheet.autoSizeColumn(i); } } return wb; } /** * 生成Excel主方法 * @param xml :包括title和head的内容和设置 * @param list :内容 * @param fit :是否需要宽度自适应 * @return HSSFWorkbook * @throws SQLException */ public HSSFWorkbook createWorkBook(final ExcelHeadXML xml,HttpServletRequest request, final List<Object[]> list, boolean fit) throws SQLException { createTop(xml,request); createBody(list,true); //宽度自适应 if(fit){ for(int i=0; i<headLength; i++){ sheet.autoSizeColumn(i); } } return wb; } /** * 创建Excel的Head和title部分 * @param xml ExcelHeadXML */ @SuppressWarnings("deprecation") private void createTop(final ExcelHeadXML xml,HttpServletRequest request) { //创建Title部分 if (null != xml.getTitle() && !"".equals(xml.getTitle())) { row = sheet.createRow(num++); cell = row.createCell(0); cell.setCellStyle(titleStyle); sheet.addMergedRegion(new CellRangeAddress(xml.getUniteRowStart(), xml.getUniteRowEnd(), xml.getUniteCellStart(), xml .getUniteRowCount())); } //创建Head部分 List<String> head = xml.getHead(); if(null != head && head.size() > 0){ headLength = xml.getHeadLength(); row = sheet.createRow(num++); for(int i=0; i<head.size(); i++){ cell = row.createCell(i); cell.setCellStyle(headStyle); cell.setCellValue(new HSSFRichTextString(head.get(i))); } } } /** * 创建Excel的Head和title部分 * @param xml ExcelHeadXML */ @SuppressWarnings("deprecation") private void createTop(final ExcelHeadXML xml) { //创建Title部分 if (null != xml.getTitle() && !"".equals(xml.getTitle())) { row = sheet.createRow(num++); cell = row.createCell(0); cell.setCellStyle(titleStyle); cell.setCellValue(new HSSFRichTextString(xml.getTitle().trim())); sheet.addMergedRegion(new CellRangeAddress(xml.getUniteRowStart(), xml.getUniteRowEnd(), xml.getUniteCellStart(), xml .getUniteRowCount())); } //创建Head部分 List<String> head = xml.getHead(); if(null != head && head.size() > 0){ headLength = xml.getHeadLength(); row = sheet.createRow(num++); for(int i=0; i<head.size(); i++){ cell = row.createCell(i); cell.setCellStyle(headStyle); cell.setCellValue(new HSSFRichTextString(head.get(i))); } } } /** * 创建Excel的body部分 * @param list : body部分的数据 * @param useId : body部分是否要序号 * @throws SQLException */ private void createBody(final List<Object[]> list, boolean useId) throws SQLException { if(null != list && list.size() > 0){ Object[] o; for(int i=0; i<list.size(); i++){ row = sheet.createRow(num++); row.setHeightInPoints(30); o = list.get(i); if(useId){ //序号 cell = row.createCell(0); cell.setCellStyle(bodyStyle); cell.setCellValue(new HSSFRichTextString((i+1)+"")); } for(int j=0; j<o.length; j++){ if(useId){ cell = row.createCell(j+1); }else{ cell = row.createCell(j); } cell.setCellStyle(bodyStyle); cell.setCellValue(new HSSFRichTextString(emptyToString(o[j]))); } } } } public String emptyToString(Object obj){ if(null == obj){ return ""; } return obj.toString().trim(); } }
读取xml文件,excel的头信息保存在xml中
import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; public class ExcelHeadXML { /** Excel的标题 */ private String title = ""; /** Excel的头 */ private List<String> head = null; /** 合并单元格时开始的行 */ private int uniteRowStart = 0; /** 合并单元格时结尾的行 */ private int uniteRowEnd = 0; /** 合并单元格需要合并的列数数量 */ private int uniteRowCount = 0; /** 合并单元格时开始的列 */ private int uniteCellStart = 0; private DocumentBuilderFactory dbf = null; private DocumentBuilder db = null; private Document doc = null; private Element root = null; private int headLength = 0; /** * 构造函数,同时解析XML * @param filePath : XML的路径 */ public ExcelHeadXML(String fileName) { /** 为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder */ dbf = DocumentBuilderFactory.newInstance(); try { db = dbf.newDocumentBuilder(); doc = db.parse(new File(ExcelHeadXML.class.getResource(fileName).getPath())); root = doc.getDocumentElement(); parseTitles(); parseHeads(); } catch (Exception ex) { ex.printStackTrace(); } } /** * 解析XML中的title部分 * 解析title的内容 * 解析行的开始位置 * 解析行的结束位置 * 解析列的开始位置 * 解析合并单元格的列的数量 */ private void parseTitles() { NodeList titles = root.getElementsByTagName("title"); for (int i = 0; i < titles.getLength(); i++) { uniteRowStart = Integer.parseInt(titles.item(i).getAttributes() .getNamedItem("uniteRowStart").getNodeValue()); uniteRowEnd = Integer.parseInt(titles.item(i).getAttributes() .getNamedItem("uniteRowEnd").getNodeValue()); uniteRowCount = Integer.parseInt(titles.item(i).getAttributes() .getNamedItem("uniteRowCount").getNodeValue()); uniteCellStart = Integer.parseInt(titles.item(i).getAttributes() .getNamedItem("uniteCellStart").getNodeValue()); title = titles.item(i).getFirstChild().getNodeValue(); } } /** * 解析head部分,将head的内容保存到集合中 * */ private void parseHeads() { head = new ArrayList<String>(); NodeList heads = root.getElementsByTagName("colum"); for(int i=0; i<heads.getLength(); i++){ head.add(heads.item(i).getFirstChild().getNodeValue()); headLength++; } } public static void main(String[] args) { ExcelHeadXML x = new ExcelHeadXML("1.xml"); // System.out.println(x.getPath()); // x.getHeads(); } /** * title的内容 * @return */ public String getTitle() { return title; } /** * 设置title内容 * @param title */ public void setTitle(String title) { this.title = title; } public int getUniteRowCount() { return uniteRowCount; } public void setUniteRowCount(int uniteRowCount) { this.uniteRowCount = uniteRowCount; } public int getUniteRowEnd() { return uniteRowEnd; } public void setUniteRowEnd(int uniteRowEnd) { this.uniteRowEnd = uniteRowEnd; } public int getUniteRowStart() { return uniteRowStart; } public void setUniteRowStart(int uniteRowStart) { this.uniteRowStart = uniteRowStart; } /** * head的集合 * @return */ public List<String> getHead() { return head; } public void setHead(List<String> head) { this.head = head; } public int getUniteCellStart() { return uniteCellStart; } public void setUniteCellStart(int uniteCellStart) { this.uniteCellStart = uniteCellStart; } /** * head部分的长度 * @return head部分的长度 */ public int getHeadLength(){ return this.headLength; } }
xml文件:
<?xml version="1.0" encoding="UTF-8"?> <xml-body> <title uniteRowStart="0" uniteRowEnd="0" uniteRowCount="10" uniteCellStart="0"> XXXXXXXX </title> <head> <colum>aa</colum> <colum>bb</colum> <colum>cc</colum> <colum>dd</colum> <colum>ee</colum> <colum>ff</colum> <colum>gg</colum> <colum>hh</colum> <colum>jj</colum> <colum>kk</colum> <colum>ll</colum> </head> </xml-body>
评论
2 楼
a21703637a
2011-12-08
1 楼 对酒当歌,人生几何 2009-11-17 引用
可以分开导出然后再写个文件合并类么哈哈
对酒当歌,人生几何 写道
能处理多大的文件?30M?40M可以吗?最近做一个导出,文件大小有30多M,一直报内存溢出,数据少了还可以。郁闷呢~~~~~~~~~~~~~~~~~
可以分开导出然后再写个文件合并类么哈哈
1 楼
对酒当歌,人生几何
2009-11-17
能处理多大的文件?30M?40M可以吗?最近做一个导出,文件大小有30多M,一直报内存溢出,数据少了还可以。郁闷呢~~~~~~~~~~~~~~~~~
发表评论
-
Java NIO
2014-12-15 17:07 778Java NIO非堵塞应用通常 ... -
eclipse tomcat 出现内存溢出
2014-09-24 17:04 786在 tomcat vmage 后加入-Xms256m -Xmx ... -
java书籍
2013-11-28 10:10 777大型网站技术架构:核心原理与案例分析 http://prod ... -
JRockit + tomcat
2013-09-11 13:47 870将tomcat中的文件catalina.bat最上面加上 se ... -
使用JRockit检测内存泄露,使用startup.bat启动tomcat
2013-08-14 15:41 01、在安装了JRockit的情况下,比如JRockit安装在c ... -
TOMCAT并发设置
2013-03-20 11:24 760<Resource name="Use ... -
批量转换文件编码格式
2013-03-08 15:25 2351import java.io.BufferedReader ... -
工作流引擎activiti 获取下一节点
2012-10-17 10:46 12963最近公司需要使用工作流引擎,选用了activiti。需求中提到 ... -
sql server 2008存储过程分页
2012-10-14 15:49 2913USE [hospital] GO /****** O ... -
Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法
2012-09-27 15:48 25425Tomcat启动时报如下错误: java.lang. ... -
STUTS2 下载 getOutputStream() has already been called for this response异常的原因
2012-09-08 10:10 7097public String excel() throws Ex ... -
iReport与JasperReport生成pdf乱码
2012-07-26 19:48 0在使用iReport与JasperReport ... -
工作流引擎 Activiti 中获取下一节点
2012-07-13 18:30 41026最近公司需要使用工作流引擎,选用了activiti。需求中提到 ... -
getOutputStream() has already been called for this response异常的原因
2012-07-13 15:04 1441Caused by: java.lang.IllegalSta ... -
批量转换文件编码格式
2012-03-31 16:47 1216import java.io.BufferedReader ... -
JAVA的内存
2012-02-15 17:03 9111. 寄存器:最快的存储区 , 由编译器根据需求进行分配 , ... -
动态代理结合事物的应用
2009-10-14 12:14 1256在jdk1.3中或更高版本中继承java.lang.refle ... -
强制下线的实现
2009-10-09 13:16 2314import java.util.HashMap; impo ...
相关推荐
在Java中实现导出Excel多行表头的复杂模板,通常会使用Apache POI库,这是一个强大的API,专为操作Microsoft Office格式的文件而设计,尤其是处理Excel(.xlsx和.xls)文件。以下是对这个主题的详细解释: **Apache...
在Java编程环境中,导出Excel文件是常见的需求,特别是在数据处理、报表生成或者数据分析的场景。本示例主要关注如何使用Java来创建适用于97-2003版Microsoft Excel的文件,这些文件通常以`.xls`为扩展名。这个版本...
通过以上步骤,我们成功地实现了使用Apache POI在Java中导出Excel文件,并实现了自动换行的功能。这种方式不仅可以提高工作效率,还能确保数据的准确性和完整性。 #### 六、注意事项与优化建议 - **兼容性问题**:...
在Java编程中,导出Excel是一项常见的数据处理任务,尤其在数据分析、报表生成等领域中广泛应用。本教程将探讨如何利用注解方式实现简单的Excel表格导出功能。这种方法通常结合Java库,如Apache POI,来简化操作流程...
"java导出excel文档通用工具类"正是这样一个工具,它允许我们灵活地生成包含表头的Excel文件,提高开发效率。 Java中导出Excel主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java API。...
在Java编程中,导出...总之,Java导出Excel涉及到的内容广泛,从选择合适的库到处理各种复杂需求,都需要开发者具备扎实的编程基础和对Excel文件格式的理解。通过不断实践和学习,你可以轻松应对各种Excel处理任务。
在Java开发中,导出Excel是一项常见的需求,用于数据的导出和报表生成。Apache POI是一个流行的开源库,专门用于处理Microsoft Office格式的文件,包括Excel(.xlsx和.xls)。本篇将深入探讨如何使用Java和Apache ...
以下是一个简单的Java导出Excel工作表的实例: 首先,确保在项目中添加Apache POI依赖。如果你使用Maven,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.apache.poi <artifactId>poi <version>4.1.2 ...
在Java编程中,导出Excel文件是一项常见的任务,特别是在数据处理、报表生成和数据分析等领域。为了实现在Java中导出Excel,我们需要引入特定的库,这些库提供了方便的API来操作Excel文件。"java实现excel导出所需要...
本篇文章将深入探讨如何实现AdvancedDataGrid的多层分组表头导出到Excel,并与后台JAVA进行交互。 首先,多层分组表头是指在数据网格的列标题部分可以有层次结构的展示,这种设计可以帮助用户更清晰地理解数据之间...
在Java编程中,导出数据到Excel是一种常见的需求,特别是在数据处理、报表生成或数据分析的场景下。这个“java 导出到EXCEL 代码”示例提供了方便且易用的方法,使得开发者只需要编写SQL查询语句并设定Excel的列名...
总结起来,SpringBoot结合EasyExcel可以轻松地实现在Java应用中导出Excel数据。EasyExcel的易用性和高性能使其成为处理大量数据导出的理想选择。只需简单几步,开发者就能构建出满足业务需求的Excel导出功能。
1. **导出Excel** 创建一个实体类,例如 `Student`,并使用注解来标记Excel的列名和数据类型: ```java public class Student { @ExcelCell(title = "姓名", order = 1) private String name; @ExcelCell...
这篇博客"java使用POI Excel模板导出数据"探讨了如何利用POI库在Java中创建Excel模板并填充数据。下面将详细介绍这个过程以及相关知识点。 首先,我们需要理解Apache POI的基本概念。POI是Apache软件基金会的一个...
5. **导出Excel** 如果需要将处理后的数据保存回Excel文件,可以创建一个新的工作簿和工作表,然后填充数据: ```java XSSFWorkbook newWorkbook = new XSSFWorkbook(); XSSFSheet newSheet = newWorkbook....
在Java开发中,导出Excel是一项常见的需求,尤其在非Web环境下,可能涉及到数据报表的生成或者数据备份。本文将详细讲解如何在Java工程中实现非Web应用的Excel导出功能,参考的文章链接为:...
在这个特定的例子中,我们将讨论如何使用POI库基于一个Excel模板文件循环输出数据行,并将结果导出为新的Excel文件。 首先,我们需要理解POI库的基本概念。POI提供了HSSF(Horizontally SpreadSheet Format)和XSSF...
Java导出到Excel是一项常见的需求,特别是在数据处理和报表生成的场景中。Java提供了多种库来实现这个功能,其中最常用的可能是Apache POI库。Apache POI是一个开源项目,允许Java程序读写Microsoft Office格式的...
本文主要围绕Java编程语言导出Excel文件的代码实现进行了阐述,涵盖了从Java Servlet页面构建到Apache POI库使用,再到导出Excel文件的具体步骤。通过本文内容,我们可以了解到如何使用Java语言结合JSP(Java Server...
### JAVA POI 导出 EXCEL 报表的操作详解(含格式及样式实现) #### 一、概述 在日常工作中,我们经常会遇到需要将数据导出到 Excel 的情况,尤其是在处理大量的报表数据时。Java POI 库为 Java 开发者提供了一种...