/**
* 导出Excel文件
*
* @param title
* String 导出文件的名字
* @param t_headList
* List 表头信息 表头名字——
* fieldname,字段名字——field,对齐方式——align,值left,right;
* 字段类型——fieldtype,值2-NUMERIC,12—VARCHAR,91—DATE,,数据参数——pattern
* 宽度——width
* @param dataList
* List 数据集合
* **/
public void xls(String title,List t_headList, List dataList) {
try {
HttpServletResponse response = getResponse();
ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(byteOut);
jxl.write.WritableSheet ws = wwb.createSheet(title, 0);
// 设置冻结单元格
ws.setRowView(0, 25);// 行高
// putRowHead(ws, 0, t_headList);// 在第一行插入表头信息
WritableFont font10 = new WritableFont(WritableFont.TIMES, 10,
WritableFont.BOLD, false);
WritableCellFormat hwcf = new WritableCellFormat(font10);
hwcf.setWrap(true);//自动换行
// 水平居中
hwcf.setAlignment(jxl.format.Alignment.CENTRE);
// 垂直居中
hwcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
// 全边框
hwcf.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
for (int i = 0; t_headList!=null&&i < t_headList.size(); i++) {
Map v = (Map) t_headList.get(i);
String name = (String) v.get("FIELDNAME");
java.math.BigDecimal width=(java.math.BigDecimal)v.get("WIDTH");
Label cell = new Label(i, 0, "" + name, hwcf);
CellFormat cf=cell.getCellFormat();
ws.addCell(cell);
if(width==null||"".equals(width))
ws.setColumnView(i, name.length() * 2 + 2); // 根据表头字数设置单元格 列, 宽
else
ws.setColumnView(i, width.intValue());//根据规定的宽度设置宽度
}
// 9号 粗体
WritableFont font9 = new WritableFont(WritableFont.TIMES, 9,
WritableFont.NO_BOLD, false);
DecimalFormat df2 = (DecimalFormat) DecimalFormat.getInstance();// 格式化数字实例
List list_wcf=new ArrayList();
for (int k = 0; t_headList!=null&&k < t_headList.size(); k++) {
Map map = (Map) t_headList.get(k);
String align = (String) map.get("ALIGN");
int fieldtype=Integer.parseInt(map.get("FIELDTYPE").toString());
String pattern = (String) map.get("PATTERN");
WritableCellFormat wcf =null;
jxl.write.DateFormat df =null;
jxl.write.NumberFormat nf =null;
if(91 == fieldtype&&pattern!=null){
df=new jxl.write.DateFormat(pattern);
wcf=new WritableCellFormat(font9,df);
}else if(fieldtype > 1 && fieldtype < 9 && fieldtype != 7&&pattern!=null){
nf=new jxl.write.NumberFormat(pattern);
wcf=new WritableCellFormat(font9,nf);
}else
wcf=new WritableCellFormat(font9);
wcf.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
wcf.setWrap(true);
// 全边框
wcf.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.THIN);
if ("right".equals(align))
wcf.setAlignment(jxl.format.Alignment.RIGHT);
else if("center".equals(align))
wcf.setAlignment(jxl.format.Alignment.CENTRE);
// else if ("left".equals(align))
// wcf.setAlignment(jxl.format.Alignment.LEFT);
list_wcf.add(wcf);
}
for (int i = 0; i < dataList.size(); i++) {
Map<String, Object> v = (Map) dataList.get(i);
ws.setRowView(i + 1, 15);// 行高
for (int k = 0; t_headList!=null&&k < t_headList.size(); k++) {
Map map = (Map) t_headList.get(k);
WritableCellFormat wcf = (WritableCellFormat)list_wcf.get(k);
String field = (String) map.get("FIELD");
int fieldtype=9;
if(map.get("FIELDTYPE")!=null)
fieldtype = Integer.parseInt(map.get("FIELDTYPE").toString());
String pattern = (String) map.get("PATTERN");
int p = field.trim().lastIndexOf(" ");
if (p > 0)
field = field.substring(p + 1, field.length());// 字段取别名
Object val = v.get(field);
if (91 == fieldtype && val != null && pattern!=null) {// 日期
try {
// System.out.println(val);
// val = getCurrentTime((Date) val, pattern);// 日期格式化输入样式
jxl.write.DateTime labelDTF = new jxl.write.DateTime(k, i + 1, (Date)val,wcf);
ws.addCell(labelDTF);
} catch (Exception e) {
e.printStackTrace();
System.out.println("日期格式化失败!");
Label cell = new Label(k, i + 1, "日期格式化失败", wcf);
ws.addCell(cell);
}
}else if (fieldtype > 1 && fieldtype < 9 && fieldtype != 7) {// 数字类型{
if (val ==null || "".equals(val.toString())) val="0.0";
try {
jxl.write.Number labelNF = new jxl.write.Number(k, i + 1, Double.valueOf(val.toString()), wcf);
ws.addCell(labelNF);
} catch (Exception e) {
e.printStackTrace();
System.out.println("数字格式化失败!");
Label cell = new Label(k, i + 1, "数字格式化失败", wcf);
ws.addCell(cell);
}
}else{
if (val != null) {
Label cell = new Label(k, i + 1, val.toString(), wcf);
ws.addCell(cell);
} else {
Label cell = new Label(k, i + 1, null, wcf);
ws.addCell(cell);
}
}
}
}
wwb.write();
wwb.close();
// 输出文件名字编码
String agent = getRequest().getHeader("USER-AGENT");
if (null != agent && -1 != agent.indexOf("MSIE")) {
title = java.net.URLEncoder.encode(title, "UTF-8").replace("+",
" ");
} else if (null != agent && -1 != agent.indexOf("Firefox")) {
title = new String(title.getBytes("UTF-8"), "iso8859-1");
} else if (null != agent && -1 != agent.indexOf("Safari")) {
title = java.net.URLEncoder.encode(title, "UTF-8").replace("+",
" ");
}
response.setContentType("application/xls");
String exportname = title + "_"
+ this.getCurrentTime(new Date(), "yyyy_MM_dd") + ".xls";
response.addHeader("Content-Disposition", "attachment; filename=\""
+ exportname + "\"");
byte[] bytes = byteOut.toByteArray();
response.setContentLength(bytes.length);
ServletOutputStream sos = response.getOutputStream();
sos.write(bytes, 0, bytes.length);
sos.flush();
sos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
配置表头数据库设计
URL varchar2 (100) 请求地址 Action + '_' + method
Field varchar2 (20) 字段代码
FieldName Nvarchar2(50) 字段名称 Null
FieldType Number(3) 字段类型 12 2-number,12- varchar2,91-Date
Align varchar2 (10) 对齐方式 center left,center,right
Pattern varchar2 (10) 输出样式参数 Null 如:yyyy-mm-dd,#,###
Width Number(3) 列宽度 Null
分享到:
相关推荐
在.NET开发中,导出Excel是一项常见的需求,特别是在Web应用程序如ASP.NET中,我们需要将数据库中的数据导出为用户友好的格式,Excel是最常见的选择。本文将深入探讨如何使用C#编程实现从数据库中读取数据并将其导出...
"Excel通用导出excel文件"这个主题涵盖了如何在不同情况下高效地实现这一目标,不论你是要处理小规模的数据还是大规模的数据集。下面,我们将深入探讨Excel的通用导出功能,以及如何利用它来优化你的工作流程。 ...
该资源提供关于DevExpress Winform 的所有可打印控件的导出excel 的通用方法,解决GridControl自带方法不能导出图片,多表头无法导出等问题,解决PivotGridControl导出时候自动分组的问题,真正做到所见所得的导出...
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
导出Excel文件通常涉及到以下几个关键知识点: 1. **创建工作簿**:在易语言中,我们需要先创建一个Excel工作簿对象,这是保存数据的基本单元。 2. **添加工作表**:工作簿可以包含多个工作表,每个工作表相当于...
易语言超级列表框导出到Excel表格模块源码例程程序调用API函数实现超级列表框导出到Excel表格。易语言超级列表框导出到Excel表格模块源码使用HTML表格格式写出。资源作者:。资源界面:。资源下载:。
### GridControl通用导出Excel知识点解析 #### 一、GridControl通用导出Excel概述 GridControl是DevExpress提供的一款用于展示和编辑数据的强大组件。在实际应用中,常常需要将GridControl中的数据导出到Excel中,...
8. **模块化设计**:将导出Excel的功能封装成模块,可以方便重复使用和维护,模块应该具有良好的输入/输出接口,便于其他程序调用。 9. **源码结构**:清晰的源码结构能提高代码可读性和可维护性,比如使用注释来...
在"易语言高级表格导出EXCEL"这个主题中,我们主要关注的是如何使用易语言来操作表格数据,并将这些数据高效地导出到Microsoft Excel格式。易语言提供了丰富的库函数和组件,使得开发者可以方便地实现对表格数据的...
在本案例中,我们关注的是如何使用 Apache POI 库来导出 Excel 文件,特别是根据模板导出和简单列表导出。下面将详细介绍这个过程。 1. **Apache POI 概述** Apache POI 提供了 Java API 来读写 Microsoft Office ...
在使用Aspose导出Excel时,模板通常是一个预先设计好的Excel文件,其中包含了固定的格式、样式和占位符。这些占位符将被程序中的动态数据替换。例如,你可以有一个模板包含一个表格,其中某些单元格内有"{0}"这样的...
在"易语言高级表格快速导出EXCEL"这个项目中,开发者可能需要实现以下关键技术点: 1. **数据结构与表格对象**:首先,需要在易语言中创建合适的数据结构来存储表格数据,这通常涉及数组或链表等数据类型。同时,...
以往的易程序导出excel太慢了,特别是数据比较多的时候,本程序写excel模板的方法极速导入导出excel或者数据库,1万条数据不用一秒钟的时间,速度杠杠的,大家可以试试效果。本例子是用超级列表框做例子,如有需要...
易语言导出EXCEL表格类模块源码,导出EXCEL表格类模块,WriteBlankCell,WriteStringCell,WritePrefix,WriteSuffix,WriteCell,ExportData,导出EXCEL表格,置行数,置列数,置数据,导出,取数据,加一行,添加数据,线程_启动
在IT领域,导出Excel功能是一项非常常见的需求,特别是在数据分析、报表生成以及数据共享等场景中。Excel作为一款强大的电子表格软件,因其易用性、灵活性和强大的计算能力,成为了企业和个人处理数据的首选工具。...
易语言源码易语言导出EXCEL表格类模块源码.rar 易语言源码易语言导出EXCEL表格类模块源码.rar 易语言源码易语言导出EXCEL表格类模块源码.rar 易语言源码易语言导出EXCEL表格类模块源码.rar 易语言源码易语言导出...
基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip基于SpringBoot和POI实现单线程和多线程导出Excel.zip...
在易语言中,导出Excel模块是一个常见的需求,尤其是在数据处理和报表生成方面。下面将详细解释如何在易语言中实现Excel的导出功能,并探讨相关知识点。 1. 易语言基础: 易语言的核心理念是“易”,体现在其语法...
"c# 按模板导出Excel 通用类"就是为了解决这个问题而设计的,它允许开发者按照预先设定的模板快速、高效地生成Excel文件。 这个通用类的核心功能包括: 1. **模板支持**:它可以读取已存在的Excel模板文件,保留...