jxl将list导入到Excel中供下载
jxl操作excel
/**
* 分隔符
*/
private final static String SEPARATOR = "|"; /**
* 由List导出至指定的Sheet,带total行(最后一行)
* @param wb 模板的workbook
* @param sheetNum 第几个表单
* @param targetFilePath 生成文件夹路径
* @param l 内容list集合,以|分割的对象string集合
* @param headInfoRows 头信息的行数
* @param columnsLength 列数
* @param remarkRowNumber 备注所在行
* @param remark 备注
* @return
* @throws WriteException
* @throws IOException
* int
*/
public static int exportExcelFromList(jxl.Workbook wb, int sheetNum,
String targetFilePath, List<String> l, int headInfoRows,
int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException {
// 创建可写入的Excel工作薄对象
WritableWorkbook wwb = null;
int writeCount = 0; // 单元格样式
// WritableFont bold = new
// WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
WritableCellFormat normalFormat = new WritableCellFormat(
NumberFormats.TEXT);
normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
jxl.format.Colour.BLACK); //设置字体;
WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.RED);
WritableCellFormat normalFormat_total = new WritableCellFormat(
font);
normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN,
jxl.format.Colour.BLACK); try { // 创建可写入的Excel工作薄对象
wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb);
WritableSheet ws = wwb.getSheet(0); Label cellRemark = new Label(0, remarkRowNumber, remark,
normalFormat);
ws.addCell(cellRemark); int row = l.size();
int columns = columnsLength;
String[] ary = new String[120]; for (int i = 0; i < row; i++) {
ary = l.get(i).split("\\" + SEPARATOR);
for (int j = 0; j < columns; j++) { if(i==row-1)
{
Label cell = new Label(j, i + headInfoRows, ary[j],
normalFormat_total);
ws.addCell(cell);
}else
{
Label cell = new Label(j, i + headInfoRows, ary[j],
normalFormat);
ws.addCell(cell);
}
}
writeCount++;
}
wwb.write();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (wwb != null) {
wwb.close();
} } return writeCount; } /**
* 导出不需要合计行
* @param wb
* @param sheetNum
* @param targetFilePath
* @param l
* @param headInfoRows
* @param columnsLength
* @param remarkRowNumber
* @param remark
* @return
* @throws WriteException
* @throws IOException
*/
public static int exportExcelFromListNoTotal(jxl.Workbook wb, int sheetNum,
String targetFilePath, List<String> l, int headInfoRows,
int columnsLength,int remarkRowNumber,String remark) throws WriteException, IOException {
// 创建可写入的Excel工作薄对象
WritableWorkbook wwb = null;
int writeCount = 0; // 单元格样式
// WritableFont bold = new
// WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD);//设置字体种类和黑体显示,字体为Arial,字号大小为10,采用黑体显示
WritableCellFormat normalFormat = new WritableCellFormat(
NumberFormats.TEXT);
normalFormat.setBorder(Border.ALL, BorderLineStyle.THIN,
jxl.format.Colour.BLACK); //设置字体;
WritableFont font = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);
WritableCellFormat normalFormat_total = new WritableCellFormat(
font);
normalFormat_total.setBorder(Border.ALL, BorderLineStyle.THIN,
jxl.format.Colour.BLACK); try { // 创建可写入的Excel工作薄对象
wwb = jxl.Workbook.createWorkbook(new File(targetFilePath), wb);
WritableSheet ws = wwb.getSheet(0); Label cellRemark = new Label(0, remarkRowNumber, remark,
normalFormat);
ws.addCell(cellRemark); int row = l.size();
int columns = columnsLength;
String[] ary = new String[120]; for (int i = 0; i < row; i++) {
ary = l.get(i).split("\\" + SEPARATOR);
for (int j = 0; j < columns; j++) { Label cell = new Label(j, i + headInfoRows, ary[j],
normalFormat);
ws.addCell(cell);
}
writeCount++;
}
wwb.write();
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (wwb != null) {
wwb.close();
} } return writeCount; }
exportList为List<String>,生成方式为遍历每个对象并将所有属性以|串起来
List<DetectorHistory> dfList = service.getList(); //获取对象集合
List<String> exportList = new ArrayList<String>();
StringBuffer sbList = new StringBuffer();
if (dfList!=null&&dfList.size()>0) {
for (DetectorHistory ele:dfList) {
sbList.delete(0, sbList.length());
//加入|
//加入属性
...
exportList.add(sbList.toString());
}
}
controller层
//模板所在文件夹路径
String tempPath = req.getSession().getServletContext()
.getRealPath(CommonValue.FileTemplatePath);
//生成文件所在文件夹路径
String exportFilePath = req.getSession().getServletContext()
.getRealPath(CommonValue.ExportFilePath);
//导出文件名
String exportFileName = "";
//模板文件名,事先生成好以及头文件情况
String targetFileName = "ReportTmp_detectorHistory.xls"; //生成的行数
int operatorCount = 0; JSONObject jsonObject = new JSONObject();
try {
// 文件导出
if (exportList.size() > 0) {
//生成文件名
exportFileName = "detectorHistory" + CommonTool.getNowDateStr2()
+ "." + targetFileName.split("\\.")[1];
//利用模板生成Workbook
Workbook rw = jxl.Workbook.getWorkbook(new File(tempPath
+ File.separator + targetFileName)); // 写入备注文件
String remarkInfo = "统计时间:" + CommonTool.getNowDateStr2() + " 金额单位:元"; //rw为模板workbook,0为sheetnum,其次为导出文件路径,exportList为|分割属性的string对象集合,4为头的行数,14为列数,1为备注所在行(从0开始),remarkinfo为备注所在行的信息
operatorCount = ExcelHelper_ChargeSituation.exportExcelFromListNoTotal(rw,
0, exportFilePath + File.separator + exportFileName,
exportList, 4, 14, 1, remarkInfo); } jsonObject.put("operatorCount", operatorCount); //返回操作条数
jsonObject.put("exportFilePath", CommonValue.ExportFilePath
+ File.separator + exportFileName); //返回生成的文件路径 if(jsonObject.get("operatorCount")!=null&&Integer.valueOf(jsonObject.get("operatorCount").toString())<=0)
{//当生成内容条数为0时
jsonObject.put("rtnCode", "404");
}else
{
jsonObject.put("rtnCode", "0");
}
} catch (BiffException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}finally{ } res.resetBuffer();
res.setContentType("text/html;charset=UTF-8");
res.getOutputStream().write(jsonObject.toString().getBytes("utf-8"));
res.getOutputStream().flush();
return null;
jxl将list导入到Excel中供下载的更多相关文章
- Excel批量导入商品,遇到导入失败记录到另一个Excel中供下载查看
/// <summary> /// EXCEL批量导入 /// </summary> /// <param name="filePath">文件 ...
- 如何使用免费控件将Word表格中的数据导入到Excel中
我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要 ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- phpexcel的写操作将数据库中的数据导入到excel中
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持.于是乎我就将它转化为2003.感觉支持地很好. 下面介绍一下具体的使用: require_once('. ...
- 从输出日志中提取接口的入参和返回做为用例导入到excel中
1 背景 接口用例已经在项目中的yml文件中编写,但是yml文件不能做为交付文档用,本文对工作中从接口输出日志中提取用例信息,并导入到excel文件中做了总些 2 工具 idea,notepad+ ...
- [转] JAVA中读取网络中的图片资源导入到EXCEL中
需求 导出人员的信息并且加上人员的照片至EXCEL中 完整的代码 //创建一个表格 HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb ...
- 将网页上指定的表单的数据导入到excel中
很多时候,我们想要将网页上显示的信息,导入到Excel中,但是很多时候无法下手.可是,这个时候,下面这个例子会帮你大忙了. 将html表单指定内容导出到EXCEL中. <!DOCTYPE HTM ...
- 小技巧之“将Text文件中的数据导入到Excel中,这里空格为分割符为例”
1.使用场景 将数据以文本导出后,想录入到Excel中,的简便方案, 起因:对于Excel的导出,Text导出明显会更方便些 2.将Text文件中的数据导入到Excel中,这里空格为分割符为例的步骤 ...
- 将页面中指定表格的数据导入到Excel中
function AutoExcel(){ var oXL = new ActiveXObject("Excel.Application"); //创建应该对象 var o ...
随机推荐
- Zabbix邮件告警提示Couldn't resolve host name解决办法
zabbix设置好邮件告警,当有触发时邮件未发送 查看zabbix server日志,提示不能连接邮件发送服务器,但是ping是可以通的
- pta 习题集 5-2 找出不是两个数组共有的元素 (5分)
给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数NN(≤20≤20),随后是NN个整数,其间以空格分隔. 输出格式: 在一行中按照数字 ...
- 理论实践:循序渐进理解AWR细致入微分析性能报告
1. AWR 概述 Automatic Workload Repository(AWR) 是10g引入的一个重要组件.在里面存贮着近期一段时间内(默认是7天)数据库活动状态的详细信息. AWR 报告是 ...
- [ jQuery ] scrollTop与offset()!
jQuery scrollTop() 与offset()! 曾经很长一段时间,很多人问我下面一段代码的好处是什么? ;(function($){ //do something })(jQuery); ...
- Supermarket---poj456(贪心并查集优化)
题目链接:http://poj.org/problem?id=1456 题意是现有n个物品,每个物品有一个保质期和一个利润,现在每天只能卖一个商品,问最大的利润是多少,商品如果过期了就不能卖了: 暴力 ...
- html中使用JS实现图片轮播效果
1.首先是效果图,要在网页中实现下图的轮播效果,有四张图片,每张图片有自己的标题,然后还有右下角的小方框,鼠标悬浮在小方框上,会切换到对应的图片中去. 2.先是HTML中的内容,最外层是轮播图整个的容 ...
- mysql中的多行查询结果合并成一个(转)
SELECT GROUP_CONCAT(md.data1) FROM DATA md,contacts cc WHERE md.conskey=cc.id AND md.mimetype_id= 5 ...
- 使用Ajax向服务器端发送请求
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- mysql索引之聚簇索引与非聚簇索引
1 数据结构及算法基础 1.1 索引的本质 官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构 本质:索引是数据结构 查询是数据库的最主要功能之一.我们都希望查询速度能尽可能快,因此数 ...
- Python 中的多维字典
Python中的dict可以实现迅速查找.那么有没有像数组有二维数组一样,有二维的字典呢?比如我需要对两个关键词进行查找的时候.2D dict 可以通过 dict_2d = {'a': {'a': 1 ...