- 浏览: 136671 次
- 性别:
- 来自: 武汉
-
文章分类
最新评论
-
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 804Java NIO非堵塞应用通常 ... -
eclipse tomcat 出现内存溢出
2014-09-24 17:04 834在 tomcat vmage 后加入-Xms256m -Xmx ... -
java书籍
2013-11-28 10:10 795大型网站技术架构:核心原理与案例分析 http://prod ... -
JRockit + tomcat
2013-09-11 13:47 918将tomcat中的文件catalina.bat最上面加上 se ... -
使用JRockit检测内存泄露,使用startup.bat启动tomcat
2013-08-14 15:41 01、在安装了JRockit的情况下,比如JRockit安装在c ... -
TOMCAT并发设置
2013-03-20 11:24 782<Resource name="Use ... -
批量转换文件编码格式
2013-03-08 15:25 2369import java.io.BufferedReader ... -
工作流引擎activiti 获取下一节点
2012-10-17 10:46 13022最近公司需要使用工作流引擎,选用了activiti。需求中提到 ... -
sql server 2008存储过程分页
2012-10-14 15:49 2931USE [hospital] GO /****** O ... -
Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)的解决办法
2012-09-27 15:48 25463Tomcat启动时报如下错误: java.lang. ... -
STUTS2 下载 getOutputStream() has already been called for this response异常的原因
2012-09-08 10:10 7147public String excel() throws Ex ... -
iReport与JasperReport生成pdf乱码
2012-07-26 19:48 0在使用iReport与JasperReport ... -
工作流引擎 Activiti 中获取下一节点
2012-07-13 18:30 41163最近公司需要使用工作流引擎,选用了activiti。需求中提到 ... -
getOutputStream() has already been called for this response异常的原因
2012-07-13 15:04 1463Caused by: java.lang.IllegalSta ... -
批量转换文件编码格式
2012-03-31 16:47 1233import java.io.BufferedReader ... -
JAVA的内存
2012-02-15 17:03 9281. 寄存器:最快的存储区 , 由编译器根据需求进行分配 , ... -
动态代理结合事物的应用
2009-10-14 12:14 1272在jdk1.3中或更高版本中继承java.lang.refle ... -
强制下线的实现
2009-10-09 13:16 2342import java.util.HashMap; impo ...
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip