关于用POI和EXCEL交互的问题
废话不多说,直接通过例子来说明POI的使用:
1.一个创建excel并写入数据的小例子,参照网上的一个例子:
public class CreateXL {/*** @param args*/public static String outputFile="D:\\test.xls";public static void main(String[] args) {//创建新的excel工作薄try {HSSFWorkbook workbook=new HSSFWorkbook();// 在Excel工作簿中建一工作表,其名为缺省值 // 如要新建一名为"报表导出"的工作表,其语句为: // HSSFSheet sheet = workbook.createSheet("报表导出");HSSFSheet sheet=workbook.createSheet();// 在索引0的位置创建行(最顶端的行)HSSFRow row=sheet.createRow(0);//在索引0的位置创建单元格(左上端)HSSFCell cell=row.createCell(0);// 定义单元格为字符串类型 cell.setCellType(HSSFCell.CELL_TYPE_STRING);// 在单元格中输入一些内容cell.setCellValue("测试");HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_TURQUOISE.index);//设置背景色cellStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);//设置前景色//通过背景色和前景色的不同来使每行的颜色交叉展现,有待测试 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置居中sheet.setColumnWidth(0, 4000);//sheet.setDefaultColumnWidth(12); //设置为12字节的宽度 cell.setCellStyle(cellStyle);// 新建一输出文件流FileOutputStream fout=new FileOutputStream(outputFile);// 把相应的Excel 工作簿存盘 workbook.write(fout);// 操作结束,关闭文件 fout.flush();fout.close();System.out.println("excel已生成");} catch (Exception e) {System.out.println("创建文件失败"+e);//e.printStackTrace(); } } }
2.自己project中用到的
public void rptImportModel() throws IOException {String fileName="报表导入模板.xls";HSSFWorkbook workbook=new HSSFWorkbook();HSSFSheet sheet=workbook.createSheet();HSSFRow row=sheet.createRow(0);//创建单元格样式风格HSSFCellStyle cellStyle = workbook.createCellStyle();cellStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);//设置前景色 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置居中//创建单元格HSSFCell cellGrpNo = row.createCell(0);cellGrpNo.setCellType(HSSFCell.CELL_TYPE_STRING);cellGrpNo.setCellValue("组号");cellGrpNo.setCellStyle(cellStyle);HSSFCell cellNodeId=row.createCell(1);cellNodeId.setCellType(HSSFCell.CELL_TYPE_STRING);cellNodeId.setCellValue("报表节点ID");cellNodeId.setCellStyle(cellStyle);sheet.setColumnWidth(1, 8000);//为防止文件名出现中文乱码,需要对文件名进行字符集转换HttpServletResponse response = ServletActionContext.getResponse();String name = new String(fileName.getBytes("GBK"), "ISO8859_1");response.setHeader("Content-disposition", "attachment;filename=" + name);OutputStream os = null;os = response.getOutputStream();workbook.write(os);os.flush();os.close();}
---------------------------------------------------------------------------------------------------------------------------------------------
总结如下:
1.想下载前询问(是打开文件还是保存到计算机)和通过IE浏览器直接选择相关应用程序插件打开两种方式:
①response.setHeader("Content-disposition","attachment;filename="+ "Example.xls" );
2.为防止导出的文件名出现乱码,需要对文件名进行URI解码,可以添加如下设置
上面的第二行String()的函数查看API用法如下:
String(byte[] bytes, Charset charset)
通过使用指定的 charset 解码指定的 byte 数组,构造一个新的 String
。
3.导出的excel格式的设置问题,今天下午想把导出的excel的第一行第一列单元格的背景色设置颜色,试了好多次,确实有点坑爹,设置如下:
HSSFCellStyle cellStyle = workbook.createCellStyle();
cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_TURQUOISE.index);//设置背景色
cell.setCellStyle(cellStyle);
除了添加上面几句,别忘了,需要在第二条语句下面添加下面的一句来将单元格填充,要不然没效果:
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
但是设置成这样子后,导出的excel单元格是黑色。试了好多次,发现了,用错方法了,第二条语句不应该是背景色,而是前景色!
cellStyle.setFillForegroundColor(HSSFColor.LIGHT_GREEN.index);//设置前景色
OK,这样子导出后,excel单元格有背景色了。但是,我想把某一列的宽度设置大一点
sheet.setColumnWidth(0, 4000);
感觉4000数据太大?但展示出来后不大,单元格宽度变长了,满足需求。也算是提供一个参考值。第一个参数表示设置第几列(从0开始),第二个参数表示设置的宽度大小。也不知道 这个数值设置大小有什么规律,反正我是没找出来,设置为负数结果宽度变的很大很大。
当然也可以将所有列的宽度都设置大一点,可以用下面的方法
sheet.setDefaultColumnWidth(12); //设置为12字节的宽度
但我是只是把某一列的宽度设置大点,所以上面的方法不合适。
参考文档连接:http://bbs.csdn.net/topics/360003997
http://luxhua.iteye.com/blog/464394
http://hi.baidu.com/yljf1314/item/008762d1c9d5dc52d73aae47
http://www.cnblogs.com/zhenmingliu/archive/2012/04/25/2469396.html
转载于:https://www.cnblogs.com/tanglc/p/3702079.html
关于用POI和EXCEL交互的问题相关推荐
- POI处理Excel中的日期数据类型
在POI处理Excel中的日期类型的单元格时,如果仅仅是判断它是否为日期类型的话,最终会以NUMERIC类型来处理. 正确的处理方法是先判断单元格 的类型是否则NUMERIC类型, 然后再判断单元格是 ...
- poi解析excel读取日期为数字的问题
Apache poi 版本:3.12 今天在用poi解析excel文件时,碰到一个蛋疼的问题. 在我的excel文件中有一列是日期类型,例如有以下这么一行数据(日期中月份前面的0会自动去掉): 在读取 ...
- java使用Jxl和Poi读写Excel
使用Jxl和Poi需要使用到的jar包(由于我所在电脑的权限问题,不能直接给),可自行前往下载:jar下载 要用到的jar包(最好是全下了): 1.commons-io-2.2.jar 2.dom4j ...
- Apache POI和EasyExcel 第六集:Apache POI的Excel读取单元格中的计算公式
Apache POI和EasyExcel 第六集:Apache POI的Excel读取单元格中的计算公式 一.资源 代码实现中的带有计算公式的Excel(xls) 链接:https://pan.bai ...
- Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据
Apache POI和EasyExcel 第五集:Apache POI的Excel读取不同类型的数据 一.资源 什么是Apache POI Apache POI 不同类型的数据的表格(xls) 链接: ...
- Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls、07版的xlsx)
Apache POI和EasyExcel 第四集:Apache POI的Excel基本读取(分为03版的xls.07版的xlsx) 一.资源 一个十分好用的日期类型处理包,和Java8搭配使用非常好 ...
- Apache POI和EasyExcel 第三集:Apache POI的Excel大数据量写入(分为03版的xls、07版的xlsx、升级版SXSSF)
Apache POI和EasyExcel 第三集:Apache POI的Excel大数据量写入(分为03版的xls.07版的xlsx.升级版SXSSF) 一.结果 我的03跑了1.204秒,07跑了5 ...
- POI 导出excel带小数点的数字格式显示不对解决方法
POI 导出excel带小数点的数字格式显示不对解决方法 参考文章: (1)POI 导出excel带小数点的数字格式显示不对解决方法 (2)https://www.cnblogs.com/firstd ...
- cpu java poi 导出_java基于poi导出excel透视表代码实例
这篇文章主要介绍了java基于poi导出excel透视表代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 从前,我是一个前端程序猿,怀着对打通 ...
- Java - Poi 操作 Excel
Java - Poi 操作 Excel 关注 "弋凡"(YiFan)微信公众号吧 记录简单笔记 做你的最爱 注意 XSSFWorkbook 对象是操作 .xlsx 格式的表格 HS ...
最新文章
- oracle 日志注册,Oracle日常维护中管理用户以及重做日志文件的方法
- 主流mes厂商_MES市场的前景
- 构建二叉堆时间复杂度的证明
- BEGIN-4 Fibonacci数列
- mysql隔离级别 举例_mysql的事务隔离级别举例
- Atlas学习手记(9):异步调用Page Method
- (转载)VS2010/MFC编程入门之三十六(工具栏:工具栏资源及CToolBar类)
- php自己创建函数,php自定义函数之内部函数
- Jmeter函数助手
- SqlServer2008镜像证书过期处理
- eagle打开的brd和sch转换为AD打开的原理图和PCB
- 基于python的智能风扇设计_[Micropython]TPYBoardV102 DIY智能温控小风扇
- Linux下查看内存使用情况方法总结
- 键盘可以实现向计算机输入数据判断,计算机应用基础_学习指南.docx
- foxmail怎么设置服务器才能登陆网易企业邮箱
- HALEY KOEHN--a good graphic designer recent years
- c v语言 小数后20位,V语言学习笔记-30集成C代码库
- 单端反激式变换器开关稳压电源原理图 此博文包含图片	(2009-02-24 12:17:53)转载▼ 标签: 单端反激式 变换器 高频变压器 原理图 磁滞回线 磁心 杂谈	分类: technical
- 华为MUX VLAN
- MediaPlayer播放音频
热门文章
- tomcat遇到jre\lib\ext\localedata.pack 时出错
- Baidu 人脸识别FireFly 与PC连接调试
- zbb20170919 设置eclipse myeclipse 在工程窗口 项目目录 显示代码错误提示的
- 使用Yii2中dropdownlist实现地区三级联动的例子
- Nginx笔记总结十一:Nginx重写规则指南
- Algorithm -- 字母重排
- 为Android Studio 项目手动下载gradle
- ZOJ 3077 Move to Baggage Office
- hdu 4638 Group
- 一文总结数据科学家常用的Python库(上)