• 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操作。的更多相关文章

  1. 从数据库导出数据到excel之POI操作

    项目说明: 1:数据库中有两张表,主键关联 2:根据条件查询数据 3:处理为需要的数据封装类型,然后传到导出excel的方法中 <--框架部署就不详谈了,用的spring框架--> 补充: ...

  2. POI操作Excel

    POI和Excel简介 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作 ...

  3. JAVA的POI操作Excel

    1.1Excel简介 一个excel文件就是一个工作簿workbook,一个工作簿中可以创建多张工作表sheet,而一个工作表中包含多个单元格Cell,这些单元格都是由列(Column)行(Row)组 ...

  4. poi操作excel的基本用法

    这周公司要用excel作为数据存储格式做一个文具申请的功能,感觉以前本来很简单的功能变复杂了不少,但是还是记录一下一些excel的基本用法. 写在最前面:这里只介绍一些excel的基本存储方式(读,写 ...

  5. 自己封装的poi操作Excel工具类

    自己封装的poi操作Excel工具类 在上一篇文章<使用poi读写Excel>中分享了一下poi操作Excel的简单示例,这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完 ...

  6. poi 操作excel

    poi操作 创建一个excel关联对象HSSFWorkbook: HSSFWorkbook book = new HSSFWorkbook(); 创建一个sheet: HSSFSheet st = b ...

  7. 自己的包poi操作Excel工具

    在前面的文章<使用poi读写Excel>中分享了一下poi操作Excel的简单演示样例.这次要分享一下我封装的一个Excel操作的工具类. 该工具类主要完毕的功能是:读取Excel.汇总E ...

  8. 一脸懵逼学习Java操作Excel之POI(Apache POI)

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1:下面简单的程序来创建一个空白Microsoft ...

  9. Java POI操作Excel注意点

    excel的行索引和列索引都是从0开始,而行号和列号都是从1开始 POI·操作excel基本上都是使用索引 XSSFRow对象的 row.getLastCellNum() 方法返回的是当前行最后有效列 ...

随机推荐

  1. NumPy库

    NumPy详细教程(官网手册翻译) Python之Numpy详细教程 一.基础篇 1.NumPy - Ndarray 对象 ndarray描述相同类型的元素集合, 可以使用基于零的索引访问集合中的项目 ...

  2. [Swift]LeetCode421. 数组中两个数的最大异或值 | Maximum XOR of Two Numbers in an Array

    Given a non-empty array of numbers, a0, a1, a2, … , an-1, where 0 ≤ ai < 231. Find the maximum re ...

  3. [Swift]LeetCode887. 鸡蛋掉落 | Super Egg Drop

    You are given K eggs, and you have access to a building with N floors from 1 to N. Each egg is ident ...

  4. PHP常用设计模式讲解

    开发中适当的使用设计模式,可以让项目有更易扩展,易维护.低耦合,代码简洁等 单例模式 <?php /** * 单例模式:使类在全局范围内只允许创建一个对象,常用于数据库连接等 */ class ...

  5. ASP.NET 一个数据访问层的封装

    刚通过开通写博客的申请,向博客园的大佬致敬,由于一直以来都在网上搜索大家的思想,也有翻遍整个百度都有的找不到的时候,作为一个网民理应为互联网贡献一点东西. 下面是我工作后受一个师傅的影响对数据库访问层 ...

  6. Python内置函数(24)——frozenset

    英文文档: class frozenset([iterable]) Return a new frozenset object, optionally with elements taken from ...

  7. css3的动画特效--元素旋转(transition,animation)

    开发中,视觉要你实现一个元素的旋转问题,比如说如下图所示: 思路:首先动画动效肯定离不开anmimation动画. 和transition动画一样,animation动画也是CSS3动画的一种,这类动 ...

  8. @@ITENTITY

    @@identity是表示的是最近一次向具有identity属性(即自增列)的表插入数据时对应的自增列的值,是系统定义的全局变量.一般系统定义的全局变量都是以@@开头,用户自定义变量以@开头.sele ...

  9. ASP.NET Core Mvc中空返回值的处理方式

    原文地址:https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/ 作者: F ...

  10. 【朝花夕拾】Android性能篇之(五)Android虚拟机

    前言 Android虚拟机的使用,使得android应用和Linux内核分离,这样做使得android系统更稳定可靠,比如程序中即使包含恶意代码,也不会直接影响系统文件:也提高了跨平台兼容性.在And ...