- 浏览: 236082 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (268)
- oracle (15)
- 设计模式 (4)
- java (16)
- 线程(Thread) (1)
- 常用 (4)
- PL/SQL (1)
- SWING (10)
- 架构 (4)
- 正则表达式 (5)
- Linux (16)
- PostgreSQL (1)
- FTP (1)
- mysql (4)
- TOMCAT (5)
- 素材 (2)
- Hibernate (3)
- 报表打印 (1)
- 高并发,大数据量处理 (6)
- UML (1)
- memcache (3)
- JMF (1)
- 通信 (2)
- window常见问题处理 (5)
- eclipse (7)
- 数据库 (2)
- java内存 (4)
- maven (4)
- Spring (12)
- JavaScript (22)
- nodejs (5)
- OSGI (1)
- 其他 (1)
- 企业开发平台 (1)
- web页面懒加载 (3)
- VMware (2)
- hadoop (2)
- hadoop.hadoop学习笔记 (1)
- web前端 (32)
- vim (6)
- CSS (21)
- web前端.widget (2)
- Activiti (1)
- BPMN (1)
- Cookie (1)
- nigix (1)
- SVN (1)
最新评论
-
woodding2008:
太棒了
用一段代码演示马云双十一晚会上玩的纸牌魔术 -
nihaonihao1987:
[b][/b]
特别响、非常近——BPMN2新规范与Activiti5 -
coosummer:
推荐使用http://buttoncssgenerator.c ...
CSS Button -
tw_wangzhengquan:
ahua186186 写道compile 'com.oracl ...
ext4,spring,hibernate构建企业开发平台 -
ahua186186:
compile 'com.oracle:ojdbc14:10. ...
ext4,spring,hibernate构建企业开发平台
import java.io.IOException; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import java.awt.Font; //import com.yxhc.util.dbUtil.ConnectionUtil ; /** private static Log log = LogFactory.getLog(ExcelUtil.class); private static String shtName = ""; private static HSSFCellStyle style = null; /** ResultSetMetaData rsmd = rs.getMetaData(); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = createSheet(wb, 1); while (rs.next()) { HSSFCell cell = row.createCell((short) i); if (rowPerPage <= 10000 && rowPerPage >= 1) { HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = createSheet(wb, 1); if (rowPerPage <= 10000 && rowPerPage >= 1) { HSSFSheet sheet = createSheet(wb, 1); /**4 if (rowPerPage <= 10000 && rowPerPage >= 1) { HSSFSheet sheet = createSheet(wb, 1,list.size()); /** /** /** } Column.java package com.sinovatech.bms.common.excel; public class Column { }
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.*;
import org.apache.commons.logging.LogFactory;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
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 java.beans.*;
* 23. *
*
* @author Great nomandia 24.
*/
public class ExcelUtil {
//列属性名
private static String[] cNames = null;
//列显示名
private static String[] cLabels = null;
//列
private static List cColumns=null;
//每页显示行数
private static int rpp = 5000;
* 通过给定的Sql导出Excel文件到Response输出流,需要指定Connection
*
* @param response
* HttpServletResponse Response
* @param conn
* Connection 指定的数据库连接
* @param sqlStr
* String 查询的Sql语句
* @param sheetName
* String 导出的Excel Sheet名称
* @param columnNames
* String[] 导出的 Excel 列名称
* @param rowPerPage
* int 每一个Sheet页的行数
* @throws SQLException
*/
public static void export(HttpServletResponse response, Connection conn,
String sqlStr, String sheetName, String columnNames[],
int rowPerPage) throws SQLException {
PreparedStatement ps = null;
ResultSet rs = null;
ps = conn.prepareStatement(sqlStr);
rs = ps.executeQuery();
if (rowPerPage <= 10000 && rowPerPage >= 1) {
rpp = rowPerPage;
}
if (!"".equals(sheetName) && null != sheetName) {
shtName = sheetName;
} else {
shtName = rsmd.getTableName(0);
}
cNames = getColumnNames(rsmd);
if (null != columnNames) {
cLabels = columnNames; // compare( columnNames ) ;
} else {
cLabels = cNames;
}
style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
setSheetColumnTitle(sheet);
int rowCnt = 0;
int sheetNum = 2;
if (rowCnt == rpp) {
sheet = createSheet(wb, sheetNum);
setSheetColumnTitle(sheet);
rowCnt = 0;
sheetNum++;
}
HSSFRow row = sheet.createRow(rowCnt + 1);
for (int i = 0; i < cNames.length; i++) {
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
String val = rs.getString(cNames[i]);
if (null == val) {
val = "";
}
cell.setCellValue(val.toUpperCase());
}
rowCnt++;
}
try {
OutputStream os = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="
+ getFileName(shtName));
wb.write(os);
if (conn != null) {
conn.close();
}
} catch (IOException ex) {
log.info("Export Excel file error ! " + ex.getMessage());
}
}
public static void export(HttpServletResponse response, List list,
String sheetName, Class cls,Map columnNames,
int rowPerPage) {
rpp = rowPerPage;
}
if (!"".equals(sheetName) && null != sheetName) {
shtName = sheetName;
} else {
shtName = "sheet";
}
style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
int rowCnt = 0;
int sheetNum = 2;
Iterator it=list.iterator();
Iterator columnNamesKey= columnNames.keySet().iterator();
cLabels=new String[columnNames.size()];
cNames=new String[columnNames.size()];
int i=0;
while(columnNamesKey.hasNext()){
String columnName=String.valueOf(columnNamesKey.next());
System.out.println("columnName="+columnName);
cNames[i]=columnName;
cLabels[i]=(String)columnNames.get(columnName);
i++;
}
setSheetColumnTitle(sheet);
while (it.hasNext()) {
if (rowCnt == rpp) {
sheet = createSheet(wb, sheetNum);
setSheetColumnTitle(sheet);
rowCnt = 0;
sheetNum++;
}
HSSFRow row = sheet.createRow(rowCnt + 1);
Object entity=it.next();
for(int j=0;j<cNames.length;j++) {
//String propertyName=(String)columnNamesKey.next();
HSSFCell cell = row.createCell((short) j);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
String val = (String)getPropertyValue(entity,cNames[j]);
if (null == val) {
val = "";
}
cell.setCellValue(val.toUpperCase());
}
rowCnt++;
}
try {
OutputStream os = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="
+ getFileName(shtName));
wb.write(os);
} catch (IOException ex) {
log.info("Export Excel file error ! " + ex.getMessage());
}
}
// 3
public static void export(HttpServletResponse response, List list,
String fileName, String sheetName, String[] columnNames, Map columnLabels,
int rowPerPage) {
rpp = rowPerPage;
}
if (!"".equals(sheetName) && null != sheetName) {
shtName = sheetName;
} else {
shtName = "sheet";
}
cNames=columnNames;
cLabels=new String[columnNames.length];
for(int i=0;i< columnNames.length;i++){
cLabels[i]=String.valueOf(columnLabels.get(columnNames[i]));
}
HSSFWorkbook wb = new HSSFWorkbook();
style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
int rowCnt = 0;
int sheetNum = 2;
Iterator it=list.iterator();
//Iterator columnNamesKey= columnNames.keySet().iterator();
setSheetColumnTitle(sheet);
while (it.hasNext()) {
if (rowCnt == rpp) {
sheet = createSheet(wb, sheetNum);
setSheetColumnTitle(sheet);
rowCnt = 0;
sheetNum++;
}
HSSFRow row = sheet.createRow(rowCnt + 1);
Map entity=(Map)it.next();
for(int j=0;j<cNames.length;j++) {
//String propertyName=(String)columnNamesKey.next();
HSSFCell cell = row.createCell((short) j);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
String val = (String)entity.get(cNames[j]);
if (null == val) {
val = "";
}
cell.setCellValue(val);
}
rowCnt++;
}
try {
OutputStream os = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="
+ getFileName(fileName));
wb.write(os);
} catch (IOException ex) {
log.info("Export Excel file error ! " + ex.getMessage());
}
}
* @param response
* HttpServletResponse Response
* @param list 数据集
* @param
* String fileName 导出的Excel 文件名称
* @param sheetName
* String 导出的Excel Sheet名称
* @param columns
* List<Column> 导出的 Excel列
* @param rowPerPage
* int 每一个Sheet页的行数
*/
public static void export(HttpServletResponse response, List list,
String fileName, String sheetName, List columns, int rowPerPage) {
rpp = rowPerPage;
}
if (!"".equals(sheetName) && null != sheetName) {
shtName = sheetName;
} else {
shtName = "sheet";
}
cColumns=columns;
cNames=new String[columns.size()];
cLabels=new String[columns.size()];
for(int i=0;i<cColumns.size();i++){
Column column=(Column)columns.get(i);
cNames[i]=column.getName();
cLabels[i]=column.getLabel();
}
HSSFWorkbook wb = new HSSFWorkbook();
style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
int rowCnt = 0;
int sheetNum = 2;
Iterator it=list.iterator();
//Iterator columnNamesKey= columnNames.keySet().iterator();
setSheetColumnTitle2(sheet);
while (it.hasNext()) {
if (rowCnt == rpp) {
sheet = createSheet(wb, sheetNum,list.size());
setSheetColumnTitle2(sheet);
rowCnt = 0;
sheetNum++;
}
HSSFRow row = sheet.createRow(rowCnt + 1);
Map entity=(Map)it.next();
for(int j=0;j<cNames.length;j++) {
//String propertyName=(String)columnNamesKey.next();
HSSFCell cell = row.createCell((short) j);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
String val = (String)entity.get(cNames[j]);
if (null == val) {
val = "";
}
cell.setCellValue(val);
}
rowCnt++;
}
try {
OutputStream os = response.getOutputStream();
response.reset();
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename="
+ getFileName(fileName));
wb.write(os);
} catch (IOException ex) {
log.info("Export Excel file error ! " + ex.getMessage());
}
}
/**
* 设置Sheet页的列属性 123. *
*
* @param sht
* HSSFSheet 124.
*/
private static void setSheetColumnTitle(HSSFSheet sht) {
HSSFRow row = sht.createRow(0);
for (int i = 0; i < cLabels.length; i++) {
HSSFCell cell = row.createCell((short) (i));
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(cLabels[i]);
cell.setCellStyle(style);
//sht.autoSizeColumn(i,true);
}
}
private static void setSheetColumnTitle2(HSSFSheet sht) {
HSSFRow row = sht.createRow(0);
for (int i = 0; i < cColumns.size(); i++) {
Column column=(Column)cColumns.get(i);
HSSFCell cell = row.createCell((short) (i));
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(cLabels[i]);
cell.setCellStyle(style);
//sht.autoSizeColumn(i,true);
sht.setColumnWidth((short) i, column.getWidth());
}
}
* 获得源数据中的列名称
*
* @param rsmd
* ResultSetMetaData
* @return String[]
*/
private static String[] getColumnNames(ResultSetMetaData rsmd) {
try {
StringBuffer result = new StringBuffer("");
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
result.append(rsmd.getColumnLabel(i)).append(",");
}
if (result.length() > 0) {
return result.substring(0, result.length() - 1).toString()
.split(",");
}
} catch (Exception e) {
return null;
}
return null;
}
* 创建一个Sheet页并返回该对象
*
* @param wb
* HSSFWorkbook
* @param seq
* int
* @return HSSFSheet
*/
private static HSSFSheet createSheet(HSSFWorkbook wb, int seq) {
int sup = seq * rpp;
int sub = (seq - 1) * rpp + 1;
if (sub < 1) {
sub = 1;
}
HSSFSheet sheet=wb.createSheet( );
shtName=shtName + "(" + sub + "-" + sup + ")";
wb.setSheetName(seq-1,shtName,HSSFWorkbook.ENCODING_UTF_16);
return sheet;
}
private static HSSFSheet createSheet(HSSFWorkbook wb, int seq,int totalSize) {
int sup = seq * rpp < totalSize ? seq * rpp : totalSize;
int sub = (seq - 1) * rpp + 1;
if (sub < 1) {
sub = 1;
}
HSSFSheet sheet=wb.createSheet( );
wb.setSheetName(seq-1,shtName + "(" + sub + "-" + sup + ")",HSSFWorkbook.ENCODING_UTF_16);
return sheet;
}
* 获得导出的文件全名
*
* @param tableName
* String
* @return String
*/
private static String getFileName(String fileName) {
fileName+= new Date().getTime() + ".xls";
try {
return URLEncoder.encode(fileName, "UTF-8");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static Object getPropertyValue(Object entity,String propertyName){
Object result=null;
if(methods==null){
try {
methods=dumMethod(entity.getClass());
} catch (IntrospectionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Method method=(Method)methods.get(propertyName);
try {
result= method.invoke(entity, null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
public static Map dumMethod(Class cls) throws IntrospectionException{
BeanInfo bean=Introspector.getBeanInfo(cls ,cls.getSuperclass());
PropertyDescriptor[] propertyDescriptors= bean.getPropertyDescriptors();
Map map=new HashMap();
for(int i=0;i<propertyDescriptors.length;i++){
PropertyDescriptor pd=propertyDescriptors[i];
System.out.println("属性名="+pd.getName());
map.put(pd.getName(), pd.getReadMethod());
}
return map;
}
static Map methods=null;
private String name;
private String label;
private short width=5000;
public Column(){}
public Column(String name,String label,short width){
this.name=name;
this.label=label;
this.width=width;
}
public Column(String name,String label ){
this.name=name;
this.label=label;
this.width=5000;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public short getWidth() {
return width;
}
public void setWidth(short width) {
this.width = width;
}
发表评论
-
2012-05-19 16:23 native2ascii.exe 转码工具使用说明
2014-04-24 18:25 6701. native2ascii.exe的介绍: nativ ... -
电力行业E语言解析包
2014-02-22 17:44 1228电力行业E语言解析包,见附件 -
Java虚拟机内存模型
2013-10-30 15:40 425转:http://blog.csdn.net/zapldy ... -
获取java 抛出的异常信息的字符串
2013-06-01 10:39 1214如何获取java 抛出的异常信息的字符串,as follow ... -
用java的JTable实现类似Excel的报表控件(转)
2012-05-24 17:08 1532用java的JTable实现类似Excel的报表控件( ... -
FTP客户端(利用sun.net.ftp.FtpClient实现)-转
2012-03-30 14:03 800转:http://wuhongyu.iteye.com/blo ... -
java生成数据库表序列号
2012-03-25 10:26 1466插入数据库数据时往往要生成自增的序列号,该代码提供了方便生产序 ... -
数据导入小工具源码
2012-03-09 12:03 1036数据导入小工具源码 -
JMX
2012-03-08 16:58 747http://www.ibm.com/developerwor ... -
序列化
2012-03-06 11:01 608InputStream fis = new FileIn ... -
JAVA调用系统命令或可执行程序
2012-02-24 15:35 809转:http://wuhongyu.iteye.com/blo ... -
java中的transient(转)
2011-11-01 15:46 883转:http://www.blogjava.net/liuga ... -
Java读写文件 FileOperate
2011-09-29 17:39 1013FileOperate.java import ... -
报表导出ExcelUtil2
2011-09-29 17:34 885import java.io.IOException ... -
Java DecimalFormat 格式化数字
2011-09-29 17:32 808我们经常要将数字进行格式化,比如取2位小数,这是最常见的 ...
相关推荐
在这个场景中,"poi导出数据到excel里"指的是使用Apache POI库在Java项目中将数据写入Excel文件的过程。这个功能在数据分析、报表生成或者数据导出等场景中非常常见。以下是对Apache POI导出数据到Excel的详细解释:...
3. **模板化导出**:ExcelUtil可能提供了一种模板机制,允许开发者定义一个Excel模板,然后填充数据生成报告或报表。这种方式在处理批量生成类似格式的Excel文件时非常高效。 4. **错误处理**:在导入数据时,...
这种功能在数据录入、报表制作和数据分析中非常有用,可以提高数据的一致性和准确性。 Apache POI 提供了 `DVConstraint` 和 `DataValidation` 类,用于在Excel中创建数据有效性规则。要创建一个下拉列表,我们首先...
在实际项目中,"导出excelUtil"常用于报表生成、数据导出功能,例如用户可以在Web应用中下载包含他们数据的定制报告。此外,它也常用于数据导入,允许用户上传Excel文件以批量插入或更新数据库中的数据。 总的来说...
在使用POI导出Excel时,需要注意以下几点: * 文件流的关闭:在导出EXCEL文件时,需要确保文件流的关闭,以免导致内存溢出和连接阻塞。 * 内存占用:在使用XSSF生成Excel 2007 OOXML (.xlsx)格式的文件时,需要注意...
这个库主要适用于那些需要在Web应用中生成Excel报告或导出数据的场景,比如数据分析、报表生成等。EasyUIPoI的名字可能来源于流行的前端框架EasyUI,但其核心功能是后端的Excel处理。 Apache POI是Apache软件基金会...
"Excel导出数据(根据Excel模板定义)"这个主题涉及到的核心技术是如何根据预设的Excel模板生成和导出数据,通常用于批量生成报表或者进行复杂的数据呈现。下面将详细解释这一过程及其相关知识点。 1. **Excel模板...
本文提供了一个工具类ExcelUtil,用于根据模板导出Excel报表并复制模板生成多个Sheet页。该工具类使用POI技术来读取模板文件,并将数据写入到Excel文件中。 知识点七:模板路径的使用 模板路径是指Excel模板文件的...
### 导出Excel错误处理及解决方案 #### 异常详情解析 在进行Web请求处理过程中,遇到一个未处理的异常情况。根据提供的异常详细信息,我们可以了解到具体的异常类型及其原因。异常类型为`System....
ExcelUtil常被用于数据导入导出、报表生成、数据分析等领域。例如,Web应用中,用户上传Excel文件后,系统可以利用ExcelUtil读取数据并进行处理,或者将处理结果导出为Excel。 8. **学习与实践** 通过阅读和理解...
5. **使用场景**: ExcelUtils常用于Web应用中的报表生成、数据导入导出、数据分析等场景。例如,它可以用于将数据库中的数据导出为Excel文件供用户下载,或者接收用户上传的Excel文件并将数据导入到数据库。 6. **...
在Java编程领域,Excel处理是一项常见的任务,尤其在数据导入导出、报表生成等场景中。本压缩包"excelUtil.zip"提供了两个关键类:`ExcelUtils`和`ExcelData`,它们是针对Excel操作的工具类,方便我们进行Excel文件...
在IT行业中,Excel作为一种强大的电子表格工具,常用于数据分析、报表制作等场景。为了方便开发者将程序中的数据快速导出到Excel文件,自定义Excel导出工具类是常见的做法。本篇文章将深入探讨如何利用Java的Apache ...
ExcelUtil便捷读取工具是一款高效且易用的Java库,专为处理Excel数据而设计,适用于各种开发场景,如数据分析、报表生成、数据导入导出等。在v3.1.6版本中,它提供了更稳定的功能和优化的性能,让开发者能够更便捷地...
package zp.ExcelUtil; import java.text.SimpleDateFormat; import java.util.Date; public class Model { private String ip; private String user; private Date date; public Model() {} public Model...
在Java编程中,处理Excel数据是常见的需求,特别是在数据分析、报表生成或者数据导入导出场景下。ExcelUtil作为一个便捷的工具类,可以帮助开发者更高效地完成这些任务。 描述中提到的“NULL”表明没有提供具体的...
这个知识点的掌握对于进行数据导入导出、报表生成或者自动化测试等工作非常重要。 **1. POI基本概念** - HSSF(Horrible Spreadsheet Format):是POI项目中处理.xls文件(Excel 97-2003)的部分,基于低级记录类型...
- **报表导出**: 快速生成批量报表文件。 - **数据备份**: 定期备份数据库中的数据到 Excel 文件。 - **数据分析**: 从数据库或其他来源获取数据后,将其整理成 Excel 格式进行分析。 #### 五、总结 通过本文对 `...
在实际应用中,ExcelUtil常用于报表生成、数据导入导出、批量处理数据等场景。例如,你可以用它来生成销售报告,从数据库中提取数据并格式化为Excel,或者将用户填写的Excel表格内容导入到系统中进行分析。 压缩包...