`
chilongxph
  • 浏览: 138772 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用poi导出excel

阅读更多
private void writeBackupSoftExcel(OutputStream os,
TreeMap<String, ArrayList<String>> result,
ArrayList<Record> staffList) {
FileInputStream tp_in = null;
HSSFWorkbook workBook = null;
HSSFRow row = null;
HSSFCell cell = null;
// ArrayList al=new ArrayList();
// set red color style

workBook = new HSSFWorkbook();

// 创建样式一
HSSFCellStyle cs1 = workBook.createCellStyle();
HSSFFont font1 = workBook.createFont();
font1.setFontName("Arial");// 设置字体
font1.setFontHeightInPoints((short) 17);// 字体大小
font1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 粗体字体
cs1.setFont(font1);
cs1.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平居中
cs1.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框
cs1.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
cs1.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
cs1.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
cs1.setAlignment(HSSFCellStyle.ALIGN_CENTER);
cs1.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cs1.setWrapText(false);

// 创建样式二
HSSFCellStyle cs2 = workBook.createCellStyle();
HSSFFont font2 = workBook.createFont();
font2.setFontName("Arial");// 设置字体
font2.setFontHeightInPoints((short) 10);// 字体大小
font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);// 正常字体
cs2.setFont(font2);
cs2.setAlignment(HSSFCellStyle.ALIGN_LEFT);// 居左对齐
cs2.setBorderBottom(HSSFCellStyle.BORDER_THIN);// 下边框
cs2.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
cs2.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
cs2.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
// cs1.setAlignment(HSSFCellStyle.ALIGN_CENTER);

cs2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
cs2.setWrapText(false);



//设置单个sheet的列数
int colnum=Constants.COL_NUM;

//System.out.println("--------------创建多个sheet---------");
try {
// set the sheet name

for (int m = 0; m <= staffList.size() / colnum; m++) {
// HSSFSheet sheet1 = workBook.getSheetAt(0);
HSSFSheet sheet1 = workBook.createSheet();
sheet1.setColumnWidth((short) 0, (short) (36 * 360));
workBook.setSheetName(m, "Soft Info "+m);


row = sheet1.getRow(0);
//合并A到G列
sheet1.addMergedRegion(new Region(0, (short) 0, 0, (short) 6));
if (row == null)
row = sheet1.createRow(0);
// 设置行高
row.setHeight((short) 600);
// 设置标题名
cell = row.createCell((short) 0);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellStyle(cs1);
cell.setCellValue("Detail    Soft    Info");


// sheet1.mergeCells( 0 , 0 , 5 , 0 );



row = sheet1.getRow(1);
if (row == null)
row = sheet1.createRow(1);
// HSSFCellStyle cs3 = workBook.createCellStyle();
// //设置行背景色
// cs3.setFillBackgroundColor(new
// HSSFColor.GREY_25_PERCENT().getIndex());
// cs3.setFillForegroundColor(HSSFColor.AQUA.index);
if (staffList.size() > (m + 1) * colnum) {

for (int i = m * colnum; i < (m + 1) * colnum; i++) {
int n = i % colnum + 1;
//设置列宽
sheet1.setColumnWidth((short)n,(short)(28*200));
// //自动调整列宽
// sheet1.autoSizeColumn((short)n);
cell = row.getCell((short) n);
// cell = row.createCell((short) 0);
// cell.setCellValue("SoftWare");
if (cell == null)
cell = row.createCell((short) n);

cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellStyle(cs2);
boolean isPubServer = staffList.get(i).getString(
"staffno").equals(
staffList.get(i).getString("staffname"));
if (!isPubServer) {
cell.setCellValue(staffList.get(i).getString(
"staffname")
+ "("
+ staffList.get(i).getString("staffno")
+ ")");
} else {
cell.setCellValue(staffList.get(i).getString(
"staffname")
+ "[Pub Server]");
}
}
} else {
for (int i = m * colnum; i < staffList.size(); i++) {
cell = row.getCell((short) (i + 1));
int n = i % colnum + 1;
if (cell == null)
cell = row.createCell((short) n);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellStyle(cs2);
//设置列宽
sheet1.setColumnWidth((short)n,(short)(28*200));
boolean isPubServer = staffList.get(i).getString(
"staffno").equals(
staffList.get(i).getString("staffname"));
if (!isPubServer)
cell.setCellValue(staffList.get(i).getString(
"staffname")
+ "("
+ staffList.get(i).getString("staffno")
+ ")");
else
cell.setCellValue(staffList.get(i).getString(
"staffname")
+ "[Pub Server]");
}
}
// write the result
String key;
String soft_name;
String staff_id;
String vaild;
Iterator<String> it = result.keySet().iterator();
ArrayList<String> staffIDList;
for (int i = 0; i < result.size(); i++) {
key = it.next();
vaild = key.substring(0, 1);
soft_name = key.substring(1);
// start from 3st row
row = sheet1.getRow(i + 2);
if (row == null) {
row = sheet1.createRow(i + 2);
}
// write first field for soft name
cell = row.getCell((short) 0);
if (cell == null) {
cell = row.createCell((short) 0);
}
// create a font style
HSSFCellStyle style = workBook.createCellStyle();
HSSFFont redFont = workBook.createFont();
redFont.setColor(HSSFFont.COLOR_RED);
HSSFFont blackFont = workBook.createFont();
blackFont.setColor(HSSFFont.COLOR_NORMAL);
// judge illegal soft
if (vaild.equals("0")) {
style.setFont(redFont);
cell.setCellStyle(style);
}
cell.setCellValue(soft_name);
// write "*"

if ((m + 1) * colnum < staffList.size()) {
staffIDList = result.get(key);
// 获取staffId
for (int j = 0; j < staffIDList.size(); j++) {
staff_id = staffIDList.get(j);

for (int k = m * colnum; k < (m + 1) * colnum; k++) {
if (staff_id.equals(staffList.get(k).getString(
"staff_id"))) {
int n = k % colnum + 1;
cell = row.getCell((short) (n));
if (cell == null)
cell = row.createCell((short) (n));
cell.setCellValue("*");
break;
}
}
}
} else {
staffIDList = result.get(key);
for (int j = 0; j < staffIDList.size(); j++) {
staff_id = staffIDList.get(j);
for (int k = m * colnum; k < staffList.size(); k++) {
if (staff_id.equals(staffList.get(k).getString(
"staff_id"))) {
int n = k % colnum + 1;
cell = row.getCell((short) n);
if (cell == null)
cell = row.createCell((short) n);
cell.setCellValue("*");
break;
}
}
}
}
}
}
workBook.write(os);
// workBook.write(os);
} catch (Exception e) {
e.printStackTrace();
setErrorMsg("Write excel backup file error!");
log.error(getErrorMsg() + e);
throw new BizException(e);
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (tp_in != null) {
try {
tp_in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}



使用这种方式可以有效的避免使用模板所带来的性能问题和jvm内存不足的问题,可是具体怎么做到对样式的灵活控制,我还没有搞的太明白,如有大侠路过,还请不吝赐教。
分享到:
评论

相关推荐

    jspm心理健康系统演示录像2021.zip

    所有源码都有经过测试,可以运行,放心下载~

    【BP分类】基于matlab阿基米德算法优化BP神经网络AOA-BP故障识别数据分类【Matlab仿真 4975期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【故障诊断】基于matlab减法平均算法优化双向时间卷积神经网络SABO-BiTCN轴承数据故障诊断【Matlab仿真 5085期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    BLE蓝牙单片机CC2540、CC2541裸机简易C语言程序开发之温湿度传感器DHT11.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。

    【故障诊断】基于matlab麻雀搜索算法优化双向时间卷积神经网络SSA-BiTCN轴承数据故障诊断【Matlab仿真 5095期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【故障诊断】基于matlab蜣螂算法优化双向时间卷积神经网络DBO-BiTCN轴承数据故障诊断【Matlab仿真 5098期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    深度神经网络学习.docx

    深度神经网络学习, 深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结。

    麻雀搜索算法优化时间卷积双向门控循环单元融合注意力机制SSA-TCN-BiGRU-Attention光伏数据回归预测【Matlab仿真 5388期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【BP分类】基于matlab花朵授粉算法优化BP神经网络FPA-BP故障识别数据分类【Matlab仿真 4997期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    基于java的大嘴团网上商城网站源代码(完整前后端+mysql+说明文档+LW).zip

    零食购物网站主要就是基于BS架构模式开发的网站,分为前台的零食展示和后台的管理员的管理,用户的购买信息管理等,以下是零食网站的主要功能: (1) 系统管理员权限: ① 管理员信息管理:管理员主要可以新增修改管理员信息,主要对密码进行修改。 ② 注册用户管理:实现了对注册用户基本信息的管理,可以对用户进行审核。 ③ 零食类别信息:实现了对零食的类别的基本信息的管理。 ④ 零食信息管理:管理了零食的基本信息的情况,并能上传零食图片等。 ⑤ 订单信息管理:针对购买的零食的订单信息进行管理查看。 ⑥ 用户结账管理:实现了用户购买零食的结账信息的查看和管理。 ⑦ 系统信息管理:主要是对系统的基本信息情况进行管理,以及管理了系统的公告,留言管理等信息。 (2) 注册用户: ① 用户信息管理:注册用户在个人的后台,可以对个人的基本信息和资料进行修改。 ② 我的购物车:查看个人购买零食的购物车信息。 ③ 我的结账信息:针对购买的零食结账的信息进行管理。 ④ 退订信息管理:对零食进行退订申请,并查看申请结果和退订情况。 (3) 网站前台: ① 零食信息展示:以列表的形式展示了网站销售...

    AIX (IBM):AIX系统安装与配置.docx

    AIX (IBM):AIX系统安装与配置.docx

    【轨迹规划】基于matlab RRT四旋翼无人机安全且最小能量的轨迹规划【含Matlab源码 9871期】.zip

    Matlab领域上传的视频均有对应的完整代码,皆可运行,亲测可用,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    【BP分类】基于matlab开普勒算法优化BP神经网络KOA-BP故障识别数据分类【Matlab仿真 5005期】.zip

    CSDN Matlab研究室上传的资料均有对应的仿真结果图,仿真结果图均是完整代码运行得出,完整代码亲测可用,适合小白; 1、完整的代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文章底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作

    Amanda:Amanda数据结构与算法教程.docx

    Amanda:Amanda数据结构与算法教程.docx

    基于java的供暖企业信息化报修平台源代码(完整前后端+mysql+说明文档+LW).zip

    基于java的供暖企业信息化报修平台源代码(完整前后端+mysql+说明文档+LW).zip

    Amanda软件开发流程教程.docx

    Amanda软件开发流程教程.docx

    河大计算机学科导论实验Ⅵ

    河大计算机学科导论实验Ⅵ

    基于Arduino的温湿度监测系统.zip

    这个项目是一个基础的温湿度监测系统,适合作为电子设计竞赛的入门项目。希望这个项目能帮助你入门电子设计和微控制器编程!

    BLE蓝牙单片机CC2540、CC2541带OSAL操作系统的项目实战开发例程-CC2540的USB口通讯.zip

    1、嵌入式物联网单片机项目开发例程,简单、方便、好用,节省开发时间。 2、代码使用IAR软件开发,当前在CC2540/CC2541上运行,如果是其他型号芯片,请自行调整。 3、软件下载时,请注意接上硬件,并确认烧录器连接正常。 4、有偿指导v:wulianjishu666; 5、如果接入其他传感器,请查看账号发布的其他资料。 6、单片机与模块的接线,在代码当中均有定义,请自行对照。 7、若硬件有差异,请根据自身情况调整代码,程序仅供参考学习。 8、代码有注释说明,请耐心阅读。 9、例程具有一定专业性,非专业人士请谨慎操作。

Global site tag (gtag.js) - Google Analytics