excel使用poi操作。
- String real_path = request.getSession().getServletContext().getRealPath("/");//获取文件路径,我是通过模板进行导出,在项目中拿到模板
- if (!real_path.endsWith("/")) {
- real_path = real_path + "/";
- }
- String r_url = real_path + "excel/bixuan.xls";//拼接好文件的完整路径
- String excelPath = r_url;
- String sheetName = "Sheet1";//获取到不同的sheet页。
- String sheetName1 = "Sheet2";
//拿到文件路径后创建excel对象
- File f = new File(excelPath );
- FileInputStream fis =fis = new FileInputStream(f);
- HSSFWorkbook wb =wb = new HSSFWorkbook(fis);
- HSSFWorkbook wb = util.createWorkBook(excelPath);
- HSSFSheet sheet = wb.getSheet(sheetName)
- HSSFSheet sheet1 = wb.getSheet(sheetName1)
//设置样式
- HSSFCellStyle style = wb.createCellStyle();
- style.setWrapText(true);
- style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
- style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
//设置边框
- style.setBorderBottom(HSSFCellStyle.BORDER_THIN); //下边框
- style.setBorderLeft(HSSFCellStyle.BORDER_THIN);//左边框
- style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
- style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框
//设置字体
- HSSFFont font2 = wb.createFont();
- font2.setFontName("仿宋_GB2312");
- font2.setFontHeightInPoints((short) 9);//字体大小
- style.setFont(font2);
- sheet.protectSheet("123456");//设置密码,保护单元格
- sheet1.protectSheet("123456");
- style.setWrapText(true);//一定要有这个,否则设置单元格密码失效
//在excel中插入的行
- sheet.shiftRows(len-1, len+20, find.size()-5, true, false);//参数详解 1从这行行开始移动,2到那行结束 3移动的数量
//合并单元格后,边框样式对合并的单元格不起作用,需要用下面代码处理
- CellRangeAddress cellRangeAddress = new CellRangeAddress(len-1,len-1,3,5);//参数,合并单元格的开始行数,与结束行数。
- int addMergedRegion = sheet.addMergedRegion(cellRangeAddress);//合并单元格
- sheet.getRow(len-1).getCell(2).setCellStyle(style);设置样式
//不同浏览器对导出的excel有不同的编码,做如下处理
- if(isMSBrowser(request)){
- xlsName = java.net.URLEncoder.encode(xlsName, "utf-8") + ".xls";
- } else {
- xlsName = new String(xlsName.getBytes("utf-8"), "iso-8859-1") + ".xls";
- }
//判断是不是ie浏览器
- public boolean isMSBrowser(HttpServletRequest request) {
- String[] IEBrowserSignals = {"MSIE", "Trident", "Edge"};
- String userAgent = request.getHeader("User-Agent");
- for (String signal : IEBrowserSignals) {
- if (userAgent.contains(signal)){
- return true;
- }
- }
- return false;
- }
//封装一下对合并单元格的边框处理
- public void setBorderStyle(int border, CellRangeAddress region, HSSFSheet sheet, HSSFWorkbook wb){
- RegionUtil.setBorderBottom(border, region, sheet, wb);//下边框
- RegionUtil.setBorderLeft(border, region, sheet, wb);//左边框
- RegionUtil.setBorderRight(border, region, sheet, wb); //右边框
- RegionUtil.setBorderTop(border, region, sheet, wb); //上边框
- }
借鉴博客:https://www.cnblogs.com/staticxy/p/6122336.html
https://www.cnblogs.com/dcncy/p/8041657.html
excel使用poi操作。的更多相关文章
- 从数据库导出数据到excel之POI操作
项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...
- POI操作Excel
POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...
- JAVA的POI操作Excel
1.1Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组 ...
- poi操作excel的基本用法
这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...
- 自己封装的poi操作Excel工具类
自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...
- poi 操作excel
poi操作 创建一个excel关联对象HSSFWorkbook: HSSFWorkbook book = new HSSFWorkbook(); 创建一个sheet: HSSFSheet st = b ...
- 自己的包poi操作Excel工具
在前面的文章<使用poi读写Excel>中分享了一下poi操作Excel的简单演示样例.这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完毕的功能是:读取Excel.汇总E ...
- 一脸懵逼学习Java操作Excel之POI(Apache POI)
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1:下面简单的程序来创建一个空白Microsoft ...
- Java POI操作Excel注意点
excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...
随机推荐
- Python函数式编程之lambda表达式
一:匿名函数的定义 lambda parameter_list: expression 二:三元表达式 条件为真时返回的结果 if 条件判断 else 条件为假的时候返回的结果 三:map map(f ...
- 微信小程序如何发送短信验证码,无需搭建服务器
自从微信小程序提供云开发支持,开发者无需搭建后台服务器,使用微信提供的核心API就可以实现应用功能,此时就需要小程序能够自己发送短信,比如短信验证码,榛子云短信(http://smsow.zhenzi ...
- web测试实践——day01
一.任务进展情况 主要是找寻网站的bug,分析bug的严重程度.同时找了本专业的同学进行博客园系统的使用. 二.存在的问题 由于上线的网站做的比较完善,导致找寻bug比较困难. 三.解决方法 对此我们 ...
- 256.Spring Boot+Spring Security: MD5是加密算法吗?
说明 (1)JDK版本:1.8 (2)Spring Boot 2.0.6 (3)Spring Security 5.0.9 (4)Spring Data JPA 2.0.11.RELEASE (5)h ...
- 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
项目中有些业务方法希望在有缓存的时候直接从缓存获取,不再执行方法,来提高吞吐率.而且这种情况有很多.如果为每一个方法都写一段if else的代码,导致耦合非常大,不方便后期的修改. 思来想去,决定使用 ...
- [Bash]LeetCode193. 有效电话号码 | Valid Phone Numbers
Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...
- [Swift]LeetCode404. 左叶子之和 | Sum of Left Leaves
Find the sum of all left leaves in a given binary tree. Example: 3 / \ 9 20 / \ 15 7 There are two l ...
- [Swift]LeetCode1028. 从先序遍历还原二叉树 | Recover a Tree From Preorder Traversal
We run a preorder depth first search on the root of a binary tree. At each node in this traversal, w ...
- python安装whl文件
在命令指示符下(cmd)的Python3安装命令为: pip3 install 文件名.whl 安装出错: matplotlib-2.0.0-cp34-cp34m-win_amd64.whl is n ...
- Linux系统打开文件最大数量限制(进程打开的最大文件句柄数设置)
ulimit [-HSTabcdefilmnpqrstuvx [limit]] 利用ulimit命令可以对资源的可用性进行控制. -H选项和-S选项分别表示对给定资源的硬限制(hard limit ...