您的位置:1010cc时时彩经典版 > 1010cc时时彩经典版 > 生成excel文件并导出,excel表格的特殊需求引发的

生成excel文件并导出,excel表格的特殊需求引发的

发布时间:2019-08-14 18:09编辑:1010cc时时彩经典版浏览(194)

    excel表格的超过常规规须要引发的Java思虑,excel表格java思量

    前言:

    后天碰着了那般的贰个须求,将下图:

     

    1010cc时时彩经典版 1

    将表格中货号-尾部一模二样的行合成一行,况且将第二行,第三行的价钱抬高到第一行中为价格二,价格三。如图:

    1010cc时时彩经典版 2

    吸收接纳那样的供给,作者的率先以为是一向手动合併(暗暗再想那也太轻巧了),然后自个儿看了总记录数自身割舍了,决定在网上找找excel的操作方法,找了一会没发掘,心想不可能浪费太多时间,不比自身动手休保养身体息,恐怕也是四弟(刚刚说老人被议论了)相比呆滞,毕竟没怎么学过excel,望有会的大神留言,也当学习了。好了废话非常的少说了,接下去让我们来看看哪些促成的吗。

    率先想要达成此成效供给将读入excel表格,小编这里运用的是HSSFWorkbook,因为用的是03版,即使想要包容07版能够访谈此博客:

    InputStream is = new FileInputStream("C://jlo.xls");
    

    接下来利用HSSFWorkbook读取,首先读取sheet,找到本身想要的sheet,获取循环全体行获得每列的值,如下:

     HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
            HashMap<String, String> map = new HashMap<>();
            // 循环工作表Sheet
            for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet  ) {
                HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
                if (hssfSheet == null) {
                    continue;
                }
                // 循环行Row
                for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum  ) {
                    HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                    if (hssfRow == null) {
                        continue;
                    }
    }
    }
    

      笔者这里为了更加好的保留的,所以笔者建了一个实体类用于保存所获取值,写着写着忽然停了,蒙了,笔者该怎样将货号同样的剧情拼接成八个实体类中了,想了想用数据库确定不适宜,太影响属性,所以机智的自己选取了全局变量,类似于缓存,因为根据本excel呈现法规,最多有八个社长久以来,而别的内容都以同一,所以只供给将长久以来的每一行的价格记录下来,保存到HashMap会集中,将其任何保留至最终多个实体model中,何况将其放入用于缓存的全局变量hashMap中,最终将其hashMap中全体value值便是管理后实体举办巡回写入一个excel中,哇,就好像此成功了。有一些轻松的,比在英特网找excel操作并且还找不到以为要快。接下来就是读取excel的现实代码达成:

     /**
         * 读取xls文件内容
         * 
         * @throws IOException
         *             输入/输出(i/o)异常
         */
        private void readXls() throws IOException {
            InputStream is = new FileInputStream("C://jlo.xls");
            HSSFWorkbook hssfWorkbook = new HSSFWorkbook(is);
            HashMap<String, String> map = new HashMap<>();
            // 循环工作表Sheet
            for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet  ) {
                HSSFSheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
                if (hssfSheet == null) {
                    continue;
                }
                // 循环行Row
                for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum  ) {
                    HSSFRow hssfRow = hssfSheet.getRow(rowNum);
                    if (hssfRow == null) {
                        continue;
                    }
                    XlsDto xld = new XlsDto();
                    xld.setSmiles(getValue(hssfRow.getCell(0)));
                 xld.setHuoHao(getValue(hssfRow.getCell(1)).substring(0,getValue(hssfRow.getCell(1)).indexOf("-")));
                 xld.seteName(getValue(hssfRow.getCell(2)));
                 xld.setcName(getValue(hssfRow.getCell(3)));
                    xld.setCas(getValue(hssfRow.getCell(4)));   
                    xld.setHuoDate(getValue(hssfRow.getCell(5)));
                    xld.setPurity(getValue(hssfRow.getCell(6)));
                    xld.setKunCun(getValue(hssfRow.getCell(7)));
                    xld.setIsCreate(getValue(hssfRow.getCell(8)));
                 xld.setaCost(getValue(hssfRow.getCell(9)));
                 xld.setxType(getValue(hssfRow.getCell(1)).substring(0,getValue(hssfRow.getCell(1)).indexOf("-")));
                    if(StringUtils.isNotBlank(getValue(hssfRow.getCell(1)))){
                     if(!map.containsKey(xld.getxType())){
                      String cost = getValue(hssfRow.getCell(9)); 
                         //insertX(xld);
                         hashMap.put(xld.getxType(), xld);
                         map.put(xld.getxType(), "1");
                         map.put(xld.getxType() "1", cost);
                        }else{
                         //String xType = getValue(hssfRow.getCell(1)).substring(0,getValue(hssfRow.getCell(1)).indexOf("-"));
                         if("1".equals(map.get(xld.getxType()))){
                          String cost = getValue(hssfRow.getCell(9)); 
                          xld.setaCost(map.get(xld.getxType() "1"));
                          xld.setbCost(cost);
                          hashMap.put(xld.getxType(), xld);
                          //updateX(xType, cost,1);
                          map.put(xld.getxType(), "2");
                          map.put(xld.getxType() "2", cost);
                         }else{
                          String cost = getValue(hssfRow.getCell(9)); 
                          xld.setaCost(map.get(xld.getxType() "1"));
                          xld.setbCost(map.get(xld.getxType() "2"));
                          xld.seteCost(cost);
                          hashMap.put(xld.getxType(), xld);
                          //updateX(xType, cost,2);
                          map.put(xld.getxType(), "3");
                         }
                    }
    
    
                    }
                }
            }
        }
    

      管理到位之后,将其重新导入给excel,达成如下:

    /**
       * 
       * @param xls
       *            XlsDto实体类的一个对象
       * @throws Exception
       *             在导入Excel的过程中抛出异常
       */
      public static void xlsDto2Excel(List<XlsDto> xls) throws Exception {
     // 获取总列数
          int CountColumnNum = xls.size();
          // 创建Excel文档
          HSSFWorkbook hwb = new HSSFWorkbook();
          XlsDto xlsDto = null;
       // sheet 对应一个工作页
          HSSFSheet sheet = hwb.createSheet("sheet1");
          HSSFRow firstrow = sheet.createRow(0); // // 下标为0的行开始
          HSSFCell[] firstcell = new HSSFCell[CountColumnNum];
          String[] names = new String[12];
          names[0] = "SMILES";
          names[1] = "货号";
          names[2] = "产品名称(英文";
          names[3] = "产品名称(中文";
          names[4] = "CAS号";
          names[5] = "货期(天)";
          names[6] = "纯度";
          names[7] = "库存";
          names[8] = "是否可定制";
          names[9] = "包装/价格1";
          names[10] = "包装/价格2";
          names[11] = "包装/价格3";
          for (int j = 0; j < 12; j  ) {
              firstcell[j] = firstrow.createCell(j);
              firstcell[j].setCellValue(new HSSFRichTextString(names[j]));
          }
          for (int i = 0; i < xls.size(); i  ) {
           // 创建一行
              HSSFRow row = sheet.createRow(i   1);
              // 得到要插入的每一条记录
              xlsDto = xls.get(i);
                  // 在一行内循环
                  HSSFCell xh = row.createCell(0);
                  xh.setCellValue(xlsDto.getSmiles());
                  HSSFCell xm = row.createCell(1);
                  xm.setCellValue(xlsDto.getHuoHao());
                  HSSFCell yxsmc = row.createCell(2);
                  yxsmc.setCellValue(xlsDto.geteName());
                  HSSFCell kcm = row.createCell(3);
                  kcm.setCellValue(xlsDto.getcName());
                  HSSFCell cj = row.createCell(4);
                  cj.setCellValue(xlsDto.getCas());
                  HSSFCell hd = row.createCell(5);
                  hd.setCellValue(xlsDto.getHuoDate());
                  HSSFCell purity = row.createCell(6);
                  purity.setCellValue(xlsDto.getPurity());
                  HSSFCell kuncun = row.createCell(7);
                  kuncun.setCellValue(xlsDto.getKunCun());
                  HSSFCell isc = row.createCell(8);
                  isc.setCellValue(xlsDto.getIsCreate());
                  HSSFCell ac = row.createCell(9);
                  ac.setCellValue(xlsDto.getaCost());
                  HSSFCell bc = row.createCell(10);
                  bc.setCellValue(xlsDto.getbCost());
                  HSSFCell ec = row.createCell(11);
                  ec.setCellValue(xlsDto.geteCost());
    
          }
          // 创建文件输出流,准备输出电子表格
          OutputStream out = new FileOutputStream("C://jlol.xls");
          hwb.write(out);
          out.close();
          System.out.println("数据库导出成功");
      }
    

      完美的消除了那些相比突出而又不新鲜的供给,代码提供仅供互相大家学习,接待访谈提点不足之处。

     

    前言: 后天碰着了这般的三个急需,将下图: 将表格中货号-前边部分同等的行合成...

    python使用xlrd与xlwt对excel的读写和格式设定,xlrdxlwt

    前言

    python操作excel首要采用xlrd和xlwt那八个库,即xlrd是读excel,xlwt是写excel的库。本文首要介绍了python使用xlrd与xlwt对excel的读写和格式设定,下边话非常少说,来探视详细的落到实处进度。

    本子里先表明# -*- coding:utf-8 -*-   

    1.  确认源excel存在并用xlrd读取第二个表单中每行的第一列的数值。

    import xlrd, xlwt 
    import os 
    
    assert os.path.isfile('source_excel.xls'),"There is no timesheet exist. Exit..." 
    
    book = xlrd.open_workbook('source_excel.xls') 
    sheet=book.sheet_by_index(0) 
    
    for rows in range(sheet.nrows): 
     value = sheet.cell(rows,0).value 
    

    2. 用xlwt盘算将从源表中读出的多少写入新表,并设定行宽和表格的格式。合併单元格2行8列后写入标题,并设定格式为事前定义的tittle_style。

    应用的是write_merge。

    wbk = xlwt.Workbook(encoding='utf-8') 
    sheet_w = wbk.add_sheet('write_after', cell_overwrite_ok=True) 
    sheet_w.col(3).width = 5000 
    tittle_style = xlwt.easyxf('font: height 300, name SimSun, colour_index red, bold on; align: wrap on, vert centre, horiz center;') 
    sheet_w.write_merge(0,2,0,8,u'这是标题',tittle_style) 
    

    3. 当函数中要用到全局变量时,注意加global。不然会产出UnboundLocalError:local variable'xxx' referenced before assignment.

    check_num = 0 
    
    def check_data(sheet): 
     global check_num 
     check_num=check_num 1 
    

    4. 写入日期和带格式的数值。原来从sheet中读取的日期格式为二零一五/4/10,管理后只保留日期并做成数组用逗号分隔后写入新的excel。

    date_arr = [] 
    date=sheet.cell(row,2).value.rsplit('/')[-1] 
    if date not in date_arr: 
      date_arr.append(date) 
    sheet_w.write_merge(row2,row2,6,6,date_num, normal_style) 
    sheet_w.write_merge(row2,row2,7,7,','.join(date_arr), normal_style) 
    

    5. 当从excel中读取的日子格式为xldate时,就须要使用xlrd的xldate_as_tuple来管理为date格式。先判定表格的ctype确实是xldate才干开端操作,不然会报错。之后date格式能够运用strftime来转化为string。如:date.strftime("%Y-%m-%d-%H")

    from datetime import date,datetime 
    from xlrd import xldate_as_tuple 
    
    if (sheet.cell(rows,3).ctype == 3): 
      num=num 1 
      date_value = xldate_as_tuple(sheet.cell_value(rows,3),book.datemode) 
      date_tmp = date(*date_value[:3]).strftime("%d") 
    
    1. 最后保存新写的表

      wbk.save('new_excel.xls')

    总结

    上述正是那篇文章的全体内容了,希望本文的内容对我们的读书可能办事能带来一定的拉拉扯扯,借使格外大家能够留言沟通。

    前言 python操作excel主要使用xlrd和xlwt这五个库,即xlrd是读excel,xlwt是写excel的库。本文主...

    Java读取excel表格,javaexcel表格

    springMVC(4)---生成excel文件并导出

            在付出进度中,必要将数据库中的数据以excel表格的措施导出。

           首先表达。笔者那边用的是Apache的POI项目,它是时下相比成熟的HSSF接口,用来管理Excel对象。其实POI不仅只好管理excel,它还足以管理word、PowerPoint、Visio、以致Outlook。

          一.首先介绍利用POI怎么着生成excel。              

         首先在生成Excel前,大家需求通晓一下Excel文本的集体情势。在POI中,是这般敞亮的:一个Excel文件对应三个workbook,一个workerbook是有若干个sheet组成的。贰个sheet有多少个row,三个row一般存在五个cell。

         对于地点的八个名词大家能够在下图精通:

    1010cc时时彩经典版 3

        对于生成Excel,POI提供了之类多少个主导指标:

    1010cc时时彩经典版,     HSSFWorkbook             excel 的文书档案对象

         HSSFSheet                excel 的表单

         HSSFRow                  excel 的行

         HSSFCell                 excel 的格子单元

         从地点的图样和Excel的团体结构,大家就能够精通成立Excel的步子。

            1、生成文书档案对象HSSHWorkbook。

            2、通过HSSFWorkbook生成表单HSSFSheet。

            3、通过HSSFSheet生成行HSSFRow

            4、通过HSSFRow生成单元格HSSFCell。

       上面体今世码:

                 第一步、导入jar包                                                      

     <dependency>
           <groupId>org.apache.poi</groupId>
           <artifactId>poi-ooxml</artifactId>
              <version>3.9</version>
         </dependency> 
    

             第二步,创建Model对象                                                

    public class Person {
    
        private String id;
        private String name;
        private String password;
        private String age;
    
    
        public Person(String id, String name, String password, String age) {
            super();
            this.id = id;
            this.name = name;
            this.password = password;
            this.age = age;
        }
    //提供set和get方法
    }
    

            第三步.下载分界面 exportexcel.jsp                                  

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <html>
    
    <!-- 正常数据导出肯定要传入参数,我这里没有用ajax传参,简单用链接传参 -->
    <script type="text/javascript">
    function download(){
         var url="download_excel?id=10&name=张三";
         window.open(url);
    }
    </script>
    <body>
    <form action="">
    <input type="button" value="报表导出" onclick="download()"/>
    </form>
    </body>
    </html>
    

              第四步、ExcleController.java                            

    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.ssm.service.impl.ExcleImpl;
    
    @Controller
    public class ExcleController {
        //这里直接new了
        ExcleImpl  excleImpl=new ExcleImpl();
    
    @RequestMapping(value="/jsp/download_excel")    
    
    //获取url链接上的参数
    public @ResponseBody String dowm(HttpServletResponse response,@RequestParam("id") String id,@RequestParam("name") String name){
         response.setContentType("application/binary;charset=UTF-8");
                  try{
                      ServletOutputStream out=response.getOutputStream();
                      try {
                          //设置文件头:最后一个参数是设置下载文件名(这里我们叫:张三.pdf)
                          response.setHeader("Content-Disposition", "attachment;fileName="   URLEncoder.encode(name ".xls", "UTF-8"));
                      } catch (UnsupportedEncodingException e1) {
                          e1.printStackTrace();
                      }
    
                      String[] titles = { "用户id", "用户姓名", "用户密码", "用户年龄" }; 
                      excleImpl.export(titles, out);      
                      return "success";
                  } catch(Exception e){
                      e.printStackTrace();
                      return "导出信息失败";
                  }
              }
    }
    

            第五步、ExcleImpl 报表导出实现层                  

    import java.util.ArrayList;
    
    import javax.servlet.ServletOutputStream;
    
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;
    import org.apache.poi.hssf.usermodel.HSSFRow;
    import org.apache.poi.hssf.usermodel.HSSFSheet;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    
    import com.ssm.model.Person;
    
    public class ExcleImpl {
    
    public void export(String[] titles, ServletOutputStream out) throws Exception{
        try{
                         // 第一步,创建一个workbook,对应一个Excel文件
                         HSSFWorkbook workbook = new HSSFWorkbook();
    
                         // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
                         HSSFSheet hssfSheet = workbook.createSheet("sheet1");
    
                         // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
    
                         HSSFRow row = hssfSheet.createRow(0);
                        // 第四步,创建单元格,并设置值表头 设置表头居中
                         HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
    
                         //居中样式
                         hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
    
                         HSSFCell hssfCell = null;
                         for (int i = 0; i < titles.length; i  ) {
                             hssfCell = row.createCell(i);//列索引从0开始
                             hssfCell.setCellValue(titles[i]);//列名1
                             hssfCell.setCellStyle(hssfCellStyle);//列居中显示                
                         }
    
                         // 第五步,写入实体数据 
                          Person  person1=new Person("1","张三","123","26");
                          Person  person2=new Person("2","李四","123","18");
                          Person  person3=new Person("3","王五","123","77");
                          Person  person4=new Person("4","徐小筱","123","1");
    
                          //这里我把list当做数据库啦
                          ArrayList<Person>  list=new ArrayList<Person>();
                          list.add(person1);
                          list.add(person2);
                          list.add(person3);
                          list.add(person4);
    
                             for (int i = 0; i < list.size(); i  ) {
                                 row = hssfSheet.createRow(i 1);                
                                 Person person = list.get(i);
    
                                 // 第六步,创建单元格,并设置值
                                 String  id = null;
                                 if(person.getId() != null){
                                         id = person.getId();
                                 }
                                row.createCell(0).setCellValue(id);
                                 String name = "";
                                 if(person.getName() != null){
                                     name = person.getName();
                                 }
                                row.createCell(1).setCellValue(name);
                                 String password = "";
                                 if(person.getPassword() != null){
                                     password = person.getPassword();
                                 }
                                 row.createCell(2).setCellValue(password);
                                 String age=null;
                                 if(person.getAge() !=null){
                                     age = person.getAge();
                                 }
                                 row.createCell(3).setCellValue(age);
                             }
    
                         // 第七步,将文件输出到客户端浏览器
                         try {
                             workbook.write(out);
                             out.flush();
                            out.close();
    
                         } catch (Exception e) {
                             e.printStackTrace();
                         }
                     }catch(Exception e){
                         e.printStackTrace();
                        throw new Exception("导出信息失败!");
    
                        }
                     }        
    }
    

        第六步:最终效果,当自家点击报表导出按钮                     

    1010cc时时彩经典版 4

    完美!

     

    想的太多,做的太少,中间的落差就是沉闷,要么去做,要么别想 少尉【11】**

     

     

    POI操作Excel,poiexcel

    一、POI概述

      Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的作用。

      结构:

      • HSSF - 提供读写Microsoft Excel格式档案的效率。
      • XSSF - 提供读写Microsoft Excel OOXML格式档案的功力。
      • HWPF - 提供读写Microsoft Word格式档案的效果。
      • HSLF - 提供读写Microsoft PowerPoint格式档案的效果与利益。
      • HDGF - 提供读写Microsoft Visio格式档案的法力。

      使用必须引进信赖

    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.17</version>
    </dependency>
    

      注:3.17版本是支撑jdk6的尾声版本

    二、HSSF概况

      HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你能够用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

    三、 POI EXCEL文书档案结构类

    • HSSFWorkbook excel文书档案对象
    • HSSFSheet excel的sheet
    • HSSFRow excel的行
    • HSSFCell excel的单元格
    • HSSFFont excel字体
    • HSSFName 名称
    • HSSFDataFormat 日期格式
    • HSSFHeader sheet头
    • HSSFFooter sheet尾
    • HSSFCellStyle cell样式
    • HSSFDateUtil 日期
    • HSSFPrintSetup 打印
    • HSSFErrorConstants 错误消息表

    四、EXCEL的读写操作

    1、读取“区域数据.xls”并蕴藏于list集结中,“区域数据.xls”如下图

    1010cc时时彩经典版 5

     1 public List<Area> importXLS(){
     2 
     3     ArrayList<Area> list = new ArrayList<>();
     4     try {
     5      //1、获取文件输入流
     6      InputStream inputStream = new FileInputStream("/Users/Shared/区域数据.xls");
     7      //2、获取Excel工作簿对象
     8         HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
     9      //3、得到Excel工作表对象
    10         HSSFSheet sheetAt = workbook.getSheetAt(0);
    11         //4、循环读取表格数据
    12      for (Row row : sheetAt) {
    13        //首行(即表头)不读取
    14             if (row.getRowNum() == 0) {
    15                 continue;
    16             }
    17             //读取当前行中单元格数据,索引从0开始
    18        String areaNum = row.getCell(0).getStringCellValue(); 
    19             String province = row.getCell(1).getStringCellValue();
    20             String city = row.getCell(2).getStringCellValue();
    21             String district = row.getCell(3).getStringCellValue();
    22             String postcode = row.getCell(4).getStringCellValue();
    23 
    24             Area area = new Area();
    25             area.setCity(city);
    26             area.setDistrict(district);
    27             area.setProvince(province);
    28        area.setPostCode(postcode);
    29             list.add(area);
    30         }
    31      //5、关闭流
    32         workbook.close();
    33     } catch (IOException e) {
    34         e.printStackTrace();
    35     }
    36   return list;
    37 }
    

    2、导出数据到“区域数据.xls”文件中,页面数据如下图:

    1010cc时时彩经典版 6

     1 public void exportExcel() throws IOException {
     2 
     3         Page<Area> page = areaService.pageQuery(null);
     4         List<Area> list = page.getContent();
     5 
     6         //1.在内存中创建一个excel文件
     7         HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
     8         //2.创建工作簿
     9         HSSFSheet sheet = hssfWorkbook.createSheet();
    10         //3.创建标题行
    11         HSSFRow titlerRow = sheet.createRow(0);
    12         titlerRow.createCell(0).setCellValue("省");
    13         titlerRow.createCell(1).setCellValue("市");
    14         titlerRow.createCell(2).setCellValue("区");
    15         titlerRow.createCell(3).setCellValue("邮编");
    16         titlerRow.createCell(4).setCellValue("简码");
    17         titlerRow.createCell(5).setCellValue("城市编码");
    18 
    19         //4.遍历数据,创建数据行
    20         for (Area area : list) {
    21             //获取最后一行的行号
    22             int lastRowNum = sheet.getLastRowNum();
    23             HSSFRow dataRow = sheet.createRow(lastRowNum   1);
    24             dataRow.createCell(0).setCellValue(area.getProvince());
    25             dataRow.createCell(1).setCellValue(area.getCity());
    26             dataRow.createCell(2).setCellValue(area.getDistrict());
    27             dataRow.createCell(3).setCellValue(area.getPostcode());
    28             dataRow.createCell(4).setCellValue(area.getShortcode());
    29             dataRow.createCell(5).setCellValue(area.getCitycode());
    30         }
    31         //5.创建文件名
    32         String fileName = "区域数据统计.xls";
    33         //6.获取输出流对象
    34         HttpServletResponse response = ServletActionContext.getResponse();
    35         ServletOutputStream outputStream = response.getOutputStream();
    36 
    37         //7.获取mimeType
    38         ServletContext servletContext = ServletActionContext.getServletContext();
    39         String mimeType = servletContext.getMimeType(fileName);
    40         //8.获取浏览器信息,对文件名进行重新编码
    41         HttpServletRequest request = ServletActionContext.getRequest();
    42         fileName = FileUtils.filenameEncoding(fileName, request);
    43 
    44         //9.设置信息头
    45         response.setContentType(mimeType);
    46         response.setHeader("Content-Disposition","attachment;filename=" fileName);
    47         //10.写出文件,关闭流
    48         hssfWorkbook.write(outputStream);
    49         hssfWorkbook.close();
    50     }
    

    工具类

     1 public class FileUtils {
     2 
     3     public static String filenameEncoding(String filename, HttpServletRequest request) throws IOException {
     4         String agent = request.getHeader("User-Agent"); //获取浏览器
     5         if (agent.contains("Firefox")) {
     6             BASE64Encoder base64Encoder = new BASE64Encoder();
     7             filename = "=?utf-8?B?"
     8                       base64Encoder.encode(filename.getBytes("utf-8"))
     9                       "?=";
    10         } else if(agent.contains("MSIE")) {
    11             filename = URLEncoder.encode(filename, "utf-8");
    12         } else if(agent.contains ("Safari")) {
    13             filename = new String (filename.getBytes ("utf-8"),"ISO8859-1");
    14         } else {
    15             filename = URLEncoder.encode(filename, "utf-8");
    16         }
    17         return filename;
    18     }
    19 }
    

     写出xls文件:

    1010cc时时彩经典版 7

    五、 EXCEL常用操作方法

    1、 得到Excel常用对象

     1 POIFSFileSystem fs=newPOIFSFileSystem(new FileInputStream("d:/test.xls")); 
     2 //得到Excel工作簿对象 
     3 HSSFWorkbook wb = new HSSFWorkbook(fs); 
     4 //得到Excel工作表对象 
     5 HSSFSheet sheet = wb.getSheetAt(0); 
     6 //得到Excel工作表的行 
     7 HSSFRow row = sheet.getRow(i); 
     8 //得到Excel工作表指定行的单元格 
     9 HSSFCell cell = row.getCell((short) j); 
    10 cellStyle = cell.getCellStyle();//得到单元格样式
    

    2、创建Excel常用对象

    1 HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象 
    2 HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象 
    3 HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行 
    4 cellStyle = wb.createCellStyle();//创建单元格样式 
    5 row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格 
    6 row.createCell((short)0).setCellValue(1); //设置Excel工作表的值
    

    3、设置sheet名称和单元格内容

    1 wb.setSheetName(1, "第一张工作表",HSSFCell.ENCODING_UTF_16); 
    2 cell.setEncoding((short) 1); 
    3 cell.setCellValue("单元格内容");
    

    4、取得sheet的数目

    1 wb.getNumberOfSheets()
    

    5、 根据index取得sheet对象

    1 HSSFSheet sheet = wb.getSheetAt(0);
    

    6、获得有效的行数

    1 int rowcount = sheet.getLastRowNum();
    

    7、取得一行的灵光单元格个数

    1 row.getLastCellNum();
    

    8、单元格值类型读写

    1 cell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置单元格为STRING类型 
    2 cell.getNumericCellValue();//读取为数值类型的单元格内容 
    

    9、设置列宽、行高

    1 sheet.setColumnWidth((short)column,(short)width); 
    2 row.setHeight((short)height);
    

    10、加多区域,合併单元格

    1 Region region = new Region((short)rowFrom,(short)columnFrom,(short)rowTo 
    2 ,(short)columnTo);//合并从第rowFrom行columnFrom列 
    3 sheet.addMergedRegion(region);// 到rowTo行columnTo的区域 
    4 //得到所有区域 
    5 sheet.getNumMergedRegions() 
    

    11、保存Excel文件

    1 FileOutputStream fileOut = new FileOutputStream(path); 
    2 wb.write(fileOut);
    

    12、依据单元格分化性质重返字符串数值

     1 public String getCellStringValue(HSSFCell cell) { 
     2   String cellValue = ""; 
     3   switch (cell.getCellType()) { 
     4     case HSSFCell.CELL_TYPE_STRING://字符串类型 
     5         cellValue = cell.getStringCellValue(); 
     6         if(cellValue.trim().equals("")||cellValue.trim().length()<=0) 
     7           cellValue=" "; 
     8         break; 
     9     case HSSFCell.CELL_TYPE_NUMERIC: //数值类型 
    10         cellValue = String.valueOf(cell.getNumericCellValue()); 
    11         break; 
    12     case HSSFCell.CELL_TYPE_FORMULA: //公式 
    13         cell.setCellType(HSSFCell.CELL_TYPE_NUMERIC); 
    14         cellValue = String.valueOf(cell.getNumericCellValue()); 
    15         break; 
    16     case HSSFCell.CELL_TYPE_BLANK: 
    17         cellValue=" "; 
    18         break; 
    19     case HSSFCell.CELL_TYPE_BOOLEAN: 
    20         break; 
    21     case HSSFCell.CELL_TYPE_ERROR: 
    22         break; 
    23     default: 
    24         break; 
    25   } 
    26   return cellValue; 
    27 }
    

    13、常用单元格边框格式

    1 HSSFCellStyle style = wb.createCellStyle(); 
    2 style.setBorderBottom(HSSFCellStyle.BORDER_DOTTED);//下边框 
    3 style.setBorderLeft(HSSFCellStyle.BORDER_DOTTED);//左边框 
    4 style.setBorderRight(HSSFCellStyle.BORDER_THIN);//右边框 
    5 style.setBorderTop(HSSFCellStyle.BORDER_THIN);//上边框
    

    14、设置字体和内容地方

     1 HSSFFont f = wb.createFont(); 
     2 f.setFontHeightInPoints((short) 11);//字号 
     3 f.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//加粗 
     4 style.setFont(f); 
     5 style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//左右居中 
     6 style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中 
     7 style.setRotation(short rotation);//单元格内容的旋转的角度 
     8 HSSFDataFormat df = wb.createDataFormat(); 
     9 style1.setDataFormat(df.getFormat("0.00%"));//设置单元格数据格式 
    10 cell.setCellFormula(string);//给单元格设公式 
    11 style.setRotation(short rotation);//单元格内容的旋转的角度
    

    15、插入图片

     1 //先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray 
     2 ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); 
     3 BufferedImage bufferImg = ImageIO.read(new File("ok.jpg")); 
     4 ImageIO.write(bufferImg,"jpg",byteArrayOut); 
     5 //读进一个excel模版 
     6 FileInputStream fos = new FileInputStream(filePathName "/stencil.xlt"); 
     7 fs = new POIFSFileSystem(fos); 
     8 //创建一个工作薄 
     9 HSSFWorkbook wb = new HSSFWorkbook(fs); 
    10 HSSFSheet sheet = wb.getSheetAt(0); 
    11 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); 
    12 HSSFClientAnchor anchor = new HSSFClientAnchor(0,0,1023,255,(short) 0,0,(short)10,10); 
    13 patriarch.createPicture(anchor , wb.addPicture(byteArrayOut.toByteArray(),HSSFWorkbook.PICTURE_TYPE_JPEG));
    

    16、调解专业表地方

    1 HSSFWorkbook wb = new HSSFWorkbook(); 
    2 HSSFSheet sheet = wb.createSheet("format sheet"); 
    3 HSSFPrintSetup ps = sheet.getPrintSetup(); 
    4 sheet.setAutobreaks(true); 
    5 ps.setFitHeight((short)1); 
    6 ps.setFitWidth((short)1);
    

     

    一、POI概述 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的效果与利益。...

    Java读取excel表格

    诚如都以用poi技巧去读取excel表格的,不过那么些技艺又是怎么着吗

    什么是Apache POI?

    Apache POI是一种流行的API,它同意程序猿使用Java程序创设,修改和体现MS Office文件。那由Apache软件基金会开销使用Java分布式设计或修改Microsoft Office文件的开源库。它包括类和艺术对用户输入数据或文件到MS Office文书档案实行解码。

    Apache POI

    Apache POI是Apache软件基金会提供的100%开源库。大好些其中型小型框框的应用程序开垦注重注重于Apache POI(HSSF XSSF)。它辅助Excel 库的兼具基本功效; 然则,突显和文件提取是它的根本特征。

     1010cc时时彩经典版 8

    本文由1010cc时时彩经典版发布于1010cc时时彩经典版,转载请注明出处:生成excel文件并导出,excel表格的特殊需求引发的

    关键词:

上一篇:学学笔记,基础概念

下一篇:没有了