java中使用jxl实现表格导出

WritableWorkbook book = null;

response.reset();

//PageContext.

response.setCharacterEncoding("UTF-8");// 设置字符集
// 设置带有字形formatting的对象标题字体
// WritableFont.BOLD, true);
WritableFont wf14 = new WritableFont(WritableFont.createFont("微软雅黑"), 14,
WritableFont.BOLD, false);
WritableCellFormat wcfF14 = new WritableCellFormat(wf14);
wcfF14.setAlignment(Alignment.CENTRE);//水平对齐
wcfF14.setVerticalAlignment(VerticalAlignment.CENTRE);//垂直对齐
// 标签字体属性
WritableFont wf12 = new WritableFont(WritableFont.createFont("微软雅黑"), 11,
WritableFont.BOLD, false);
WritableCellFormat wcfF12 = new WritableCellFormat(wf12);
wcfF12.setAlignment(Alignment.CENTRE);
wcfF12.setVerticalAlignment(VerticalAlignment.CENTRE);
// 内容字体属性
WritableFont wf11 = new WritableFont(WritableFont.createFont("微软雅黑"), 11,
WritableFont.NO_BOLD, false);
WritableCellFormat wcfF11 = new WritableCellFormat(wf11);
wcfF11.setAlignment(Alignment.CENTRE);
// 创建人审核人字体属性
WritableFont wf13 = new WritableFont(WritableFont.createFont("微软雅黑"), 8,
WritableFont.NO_BOLD, false);
WritableCellFormat wcfF13 = new WritableCellFormat(wf11);
// 设置边框给单元格加边框
wcfF12.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);

// 创建工作流
OutputStream os = null;
try {
// 设置弹出对话框
response.setContentType("application/DOWLOAD");
response.setCharacterEncoding("UTF-8");
// 设置工作表的标题
// response.setHeader("Content-Disposition",
// "attachment; filename=Norecord_Social_Credit_Code.xls");
// 设置生成的文件名字
response.addHeader("Content-Disposition", "inline; filename="
+ new String(name.getBytes("GB2312"), "ISO8859_1") + ".xls");
os = response.getOutputStream();
// 初始化工作表
book = Workbook.createWorkbook(os);

} catch (IOException e1) {

//logger.error("导出excel出现IO异常", e1);
throw new ServiceException("导出失败", e1);
}
try {
// 设置日期格式
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");//日期格式1
SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//日期格式1
Timestamp appDate = order_scrk.getB_createTime();
String appDateStr = sf.format(appDate);//建表日期
//String product_date=sf2.format(order_cgtl_dts.getProduct_date());

// 以下为excel表格内容
// int nCount = list.size();
WritableSheet sheet = book.createSheet(name, 0);// 设置sheet名称
sheet.getSettings().setAutomaticFormulaCalculation(true);
// 设置默认列宽
sheet.getSettings().setDefaultColumnWidth(14);
// 设置默认行高
// sheet.getSettings().setDefaultRowHeight(300);
// 生成名工作表,参数0表示这是第一页
// int nI = 1;

// 表字段名
sheet.mergeCells(0, 0, 11, 0);// 1-k合并
sheet.setRowView(0, 800); // 设置第1行行高
sheet.addCell(new jxl.write.Label(0, 0, name, wcfF14));
// 合并备注那里单元格
sheet.mergeCells(1, 27, 11, 27);//备注那里
sheet.setRowView(27, 1000); // 设置第27行行高
// sheet.setc
sheet.mergeCells(0, 1, 11, 1);// 第二行合并
sheet.addCell(new jxl.write.Label(0, 1, "单据编号:"
+ order_scrk.getNumber() + " \t 日期:" + appDateStr + " \t 单据状态:"
+ order_status.getOrder_status_name(), wcfF12));
sheet.mergeCells(1, 2, 11, 2);// 第3行合并
sheet.addCell(new jxl.write.Label(0, 2, "质检员:", wcfF12));
sheet.addCell(new jxl.write.Label(1, 2, user1.getUser_name(),wcfF11));
sheet.mergeCells(1, 3, 11, 3);// 第4行合并
sheet.addCell(new jxl.write.Label(0, 3, "项目:", wcfF12));
sheet.addCell(new jxl.write.Label(1, 3, project.getProject_name(),wcfF11));//项目名称
//sheet.addCell(new jxl.write.Label(1, 2, "原材料仓", wcfF12));
sheet.addCell(new jxl.write.Label(0, 4, "物料编码", wcfF12));
sheet.addCell(new jxl.write.Label(1, 4, "物料名称", wcfF12));
sheet.addCell(new jxl.write.Label(2, 4, "规格", wcfF12));
sheet.addCell(new jxl.write.Label(3, 4, "型号", wcfF12));
sheet.addCell(new jxl.write.Label(4, 4, "单位", wcfF12));
sheet.addCell(new jxl.write.Label(5, 4, "应收数量", wcfF12));
sheet.addCell(new jxl.write.Label(6, 4, "序列号", wcfF12));
sheet.addCell(new jxl.write.Label(7, 4, "实收数量", wcfF12));
sheet.addCell(new jxl.write.Label(8, 4, "批号", wcfF12));
sheet.addCell(new jxl.write.Label(9, 4, "仓库", wcfF12));
sheet.addCell(new jxl.write.Label(10, 4, "仓位", wcfF12));
sheet.addCell(new jxl.write.Label(11, 4, "库存状态", wcfF12));

for (int i = 0; i < list.size(); i++) {
Order_scrk_dts order_scrk_dts= list.get(i).getOrder_scrk_dts();
String sql="SELECT f.ser_number from finished_p_sernum f"
+" LEFT JOIN order_zj_dts o ON f.order_cskc_dts_id=o.order_zj_dts_id"
+" LEFT JOIN order_scrk_dts s ON o.order_zj_dts_id=s.order_scrk_dts_id"
+" where s.order_scrk_id=?1";
Map<Integer, Object> maps = new HashMap<Integer, Object>();
maps.put(1, order_scrk_dts.getOrder_zj_dts_id());
List<Map<String,Object>> names = baseDao.findBySQL(sql, maps);
String hege="";
for (int j = 0; j < names.size(); j++)
{
hege+=(String) names.get(j).get("ser_number")+",";
}

Material material=list.get(i).getMaterialDTO().getMaterial();//获得材料

//获取单位id
long unit_id=list.get(i).getMaterialDTO().getMaterial().getCom_unit();
Unit unit=(Unit)baseDao.get(Unit.class, (Serializable)unit_id);
//获取仓库
long store_id=order_scrk_dts.getStore_house_id();
Store_house store_house=(Store_house)baseDao.get(Store_house.class, (Serializable)store_id);
//获取仓位
long position=order_scrk_dts.getStore_house_position_id();
Store_house_position house_position=(Store_house_position)baseDao.get(Store_house_position.class, (Serializable)position);
//获取库存状态
long stock=order_scrk_dts.getStock_status();
Stock_status status=(Stock_status)baseDao.get(Stock_status.class, (Serializable)stock);
//获取批次
String batch="";
if(order_scrk_dts.getBatch_num()!=null)
{
batch=order_scrk_dts.getBatch_num().toString();
}

sheet.addCell(new jxl.write.Label(0, 5+i, material.getMaterial_number(),wcfF11));// 编码
sheet.addCell(new jxl.write.Label(1, 5+i, material.getMaterial_name(), wcfF11));//物料名称
sheet.addCell(new jxl.write.Label(2, 5+i, material.getCom_stantard(), wcfF11));//规格
sheet.addCell(new jxl.write.Label(3, 5+i, material.getCom_model(), wcfF11));//型号
sheet.addCell(new jxl.write.Label(4, 5+i, unit.getUnit_name(),wcfF11));//单位
sheet.addCell(new jxl.write.Label(5, 5+i, order_scrk_dts.getYinshou_num().toString(), wcfF11));// 应收数量
sheet.addCell(new jxl.write.Label(6, 5+i, hege,wcfF11));//单位
sheet.addCell(new jxl.write.Label(7, 5+i, order_scrk_dts.getShishou_num().toString(), wcfF11));// 应收数量
sheet.addCell(new jxl.write.Label(8, 5+i, batch, wcfF11));// 应收数量
sheet.addCell(new jxl.write.Label(9, 5+i, store_house.getStore_house_name(), wcfF11));// 应收数量
sheet.addCell(new jxl.write.Label(10, 5+i, house_position.getPosition_name(), wcfF11));// 应收数量
sheet.addCell(new jxl.write.Label(11, 5+i, status.getStock_status_name(), wcfF11));// 应收数量
}
// 28行加备注
sheet.addCell(new jxl.write.Label(0, 27, "备注:", wcfF12));
// 创建人
sheet.addCell(new jxl.write.Label(7, 28, "创建人:"
+ user3.getUser_name(), wcfF13));
// 审核人
sheet.addCell(new jxl.write.Label(8, 28, "审核人:", wcfF13));
sheet.addCell(new jxl.write.Label(1, 27, order_scrk.getRemark(), wcfF11));//备注
book.write();
book.close();

} catch (Exception e) {
throw new ServiceException("导出失败", e);
} finally {
if (null != os) {
try {

os.flush();
os.close();
} catch (IOException e) {
// logger.error("关流出现异常", e);
e.printStackTrace();
}
}
}

时间: 2024-07-31 14:52:11

java中使用jxl实现表格导出的相关文章

java中使用jxl导出Excel表格详细通用步骤

该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入session中备份一份,在调用导出方法时,从session中获取即可, 如果为后台直接导出,直接查询数据库后将结果传入即可,当然也可以在导出Excel方法中查询. 查询方法: // 获取查询结果存入session中        Object resultList = request.getAttr

ssh+jxl将表格导出为Excel

首先准备jxl.jar. 然后让我们了解了解这个jxl,Excel本来就有工作簿.工作表.单元格等属性,所以我们从数据库导出表格也必须先有工作簿(workbook).工作表(sheet).单元格(label).实现导出表格也是从三个入手. 首先创建一个writeworkbook对象 Writableworkbook  book=Workbook.createWorkbook(new File(path)): 然后创建工作表sheet对象 WritableSheet sheet=book.crea

Java中的项目的导入导出

在很多情况下,需要把当前的Java工程传递给其他人继续工作或者协同工作,或者从其他人那里接收到传递来的Java项目,这时掌握Java项目的导入和导出是十分必要的. Hello World->右键->Export...->General->Archive(压缩文件)->next 勾选Hello World 右侧的两个是关于工程的.classpath配置文件和当前的工程配置文件(.project) 如果希望该工程导出之后可以被其他人导入并且继续使用开发 .classpath和.p

java中使用poi导出excel表格数据并且可以手动修改导出路径

在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下 jar包下载路径:http://download.csdn.net/download/pumpkin09/7077011 第二步:添加poi导出工具类 1 package com.yjd.admin.util; 2 3 import java.io.IOException; 4 import ja

Java中导入导出Excel -- POI技术

一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.导出Excel Jakarta PO

Java中导入、导出Excel

一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.导出Excel Jakarta POI

[转]Java中导入、导出Excel

原文地址:http://blog.csdn.net/jerehedu/article/details/45195359 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一

Java中导出Excel数据,封装Bean

在Java中封装导出Excel数据的总体思路为: 1.导出,根据查询得到的数据(一般我们页面上用的是查询条件带分页的),我们需要把查询条件带到后台重新查询,并且是查询全部数据,不带分页 2.不能用ajax异步提交.应该用location.href=""的方式,把处理的流交给浏览器来处理,JS无法处理流计算. 3.封装统一的Bean实体,主要输入导出的列名,excel名,数据集即可导出. 用到的Maven地址: <!-- poi --> <dependency>

java jxl excel 导入导出的 总结(建立超链接,以及目录sheet的索引)

最近项目要一个批量导出功能,而且要生成一个单独的sheet页,最后后面所有sheet的索引,并且可以点击进入连接.网上搜索了一下,找到一个方法,同时把相关的excel导入导出操作记录一下!以便以后使用! 简单先写一下目录的建立的主要代码,测试用的 List ls = new ArrayList();//报表名称列表  ls.add("BB_BB03");  ls.add("BB_BB05");  ls.add("BB_BB06"); try {