zoukankan      html  css  js  c++  java
  • 使用POI操作excel.

    一。使用POI操作excel. 
       目标:将Oracle数据库查询到的大量数据导入excel文件。 

        1.使用此方式,首先需要下载poi-2.5.1.jar文件。这个官网有提供。 

        2.将poi-2.5.1.jar导入工程。 

        3.接下来就可以放心写你的Java代码就可以了。 

    Java代码  收藏代码
    <pre name="code" class="java">import org.apache.poi.hssf.usermodel.HSSFCell;  
    import org.apache.poi.hssf.usermodel.HSSFCellStyle;  
    import org.apache.poi.hssf.usermodel.HSSFDataFormat;  
    import org.apache.poi.hssf.usermodel.HSSFRow;  
    import org.apache.poi.hssf.usermodel.HSSFSheet;  
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;  
    import org.apache.poi.hssf.util.HSSFColor;  
      
    import common.Utils;  
      
    public class ToExcel {  
        /** 
         * poi方式  
         * @author xulx 
         */  
        public void poiToExcel() {  
            FileOutputStream fout = null;  
            try {  
                fout = new FileOutputStream(new File("file/data.xls"));  
            } catch (FileNotFoundException e1) {  
                e1.printStackTrace();  
            }  
            // 创建工作簿  
            HSSFWorkbook workbook = new HSSFWorkbook();  
      
            // 由工作簿创建工作表  
            HSSFSheet sheet = workbook.createSheet();  
      
            // 创建行  
            HSSFRow row = null;  
            row = sheet.createRow(0);  
      
            // 创建单元格,设置每个单元格的值(作为表头)  
            HSSFCell cell = null;  
            cell = row.createCell(0);  
            cell.setCellValue("编号");  
            cell = row.createCell(1);  
            cell.setCellValue("姓名");  
            cell = row.createCell(2);  
            cell.setCellValue("出生年月");  
            // totalList存放的是一条条完整的记录  
            List totalList = Utils.getAllDatas();  
            // list存放的是每一条记录的所有列  
            List l = null;  
            if (totalList != null) {  
      
                for (int i = 0; i < totalList.size(); i++) {  
                    l = (List) totalList.get(i);  
                    row = sheet.createRow(i + 1);  
      
                    for (int j = 0; j < l.size(); j++) {  
                        cell = row.createCell(j);  
                        cell.setCellValue(l.get(j).toString());  
                    }  
      
                }  
            }  
      
            try {  
                workbook.write(fout);  
      
            } catch (IOException e) {  
      
                e.printStackTrace();  
            } finally {  
                try {  
                    fout.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
      
        }  
      
        /** 
         * poi控制单元格样式 
         */  
        public void setCellStyle() {  
            FileOutputStream out = null;  
            try {  
                out = new FileOutputStream(new File("file/data2.xls"));  
                HSSFWorkbook workbook = new HSSFWorkbook();  
                HSSFSheet sheet = workbook.createSheet();  
                HSSFRow row = sheet.createRow(0);  
                HSSFCell cell = row.createCell(0);  
                cell.setCellValue("hello");  
                // 创建HSSFCellStyle对象  
      
                HSSFCellStyle style = workbook.createCellStyle();  
                // 设置此样式(样式属性)  
                style.setFillBackgroundColor(HSSFColor.BLUE.index2);  
                workbook.write(out);  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                if (out != null) {  
                    try {  
                        out.close();  
                    } catch (IOException e) {  
                        e.printStackTrace();  
                    }  
                }  
            }  
      
        }  
      
        /** 
         *  
         * PIO设置日期格式 
         */  
        public void setDateFormat() {  
            FileOutputStream fout = null;  
            try {  
                fout = new FileOutputStream(new File("file/data3.xls"));  
                HSSFWorkbook workbook = new HSSFWorkbook();  
                HSSFSheet sheet = workbook.createSheet();  
                HSSFRow row = sheet.createRow(0);  
                HSSFCell cell = row.createCell(0);  
                cell.setCellValue(new Date());  
      
                // 设置一种数据格式  
                HSSFCellStyle cellstyle = workbook.createCellStyle();  
                cellstyle.setDataFormat(HSSFDataFormat  
                        .getBuiltinFormat("m/d/yy h:mm"));  
      
                // 设置此单元格日期样式  
                cell.setCellStyle(cellstyle);  
                workbook.write(fout);  
            } catch (FileNotFoundException e) {  
                e.printStackTrace();  
            } catch (IOException e) {  
                e.printStackTrace();  
            } finally {  
                try {  
                    fout.close();  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
      
        }  
    }</pre>  
     总结:我们耐心看我的代码之后,我想你肯定就豁然明白了。  
    

      

      其实大家看到,使用poi方式将数据写入excel的步骤就是这样的。(完全按照我们打开一个.xls文件,写入内容的步骤  来操作即可)
          1.首先创建excel工作簿。
          2.在这个工作簿上创建工作表
          3.在这个工作表中创建行。
          4.每一行添加单元格,每一个单元格加入值就可以了。

          综上所述,我的代码部分也写了详细的注释,大家应该很容易看明白的。方法poiToExcel()就可以成功的将从数据库查询到的数据写入excel文件了。

         如果读者还需要设置一些额外的东西,例如excel的样式,那么我们使用HSSFCell类即可。如上的方法setCellStyle()即简单的设置了一下样式。(当然,因为我的主管给我安排的任务并没有要求设置样式,所以,并没有去设置太多东西),还有就是一个关于日期的设置,也是比较繁琐的,通过上述的方法setDateFormat()可以让日期正确的显示在excel中。

       下面是我查询数据用到的Utils,也供大家参考。

    package common;  
      
    import java.sql.Connection;  
    import java.sql.ResultSet;  
    import java.sql.SQLException;  
    import java.sql.Statement;  
    import java.util.ArrayList;  
    import java.util.List;  
      
    public class Utils {  
        /** 
         * 查询表test中的所有数据,将返回的数据全部放入List集合 
         * @return 
         */  
        public static List getAllDatas(){  
            List totalList=new ArrayList();  
            Connection conn=null;  
            Statement stm=null;  
            ResultSet rs=null;  
            conn=ConnectionFactory.getOracleConnection();  
            String sql="select id ,name,birthday from test";  
            try {  
                stm=conn.createStatement();  
                rs=stm.executeQuery(sql);  
                List list=null;  
                while(rs.next()){  
                    list=new ArrayList();  
                    list.add(rs.getObject(1));  
                    list.add(rs.getObject(2));  
                    list.add(rs.getObject(3));    
                    totalList.add(list);  
                }  
            } catch (SQLException e) {  
                e.printStackTrace();  
            }  
              
            return totalList;  
        }  
    }  
    

      来源:https://blog.csdn.net/yjdreams4it/article/details/8861861   作者: 

  • 相关阅读:
    数据仓库--事实表
    Oracle SQL函数pivot、unpivot转置函数实现行转列、列转行
    在Oracle中使用rank()over()排名的问题
    python 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。(用列表推导式)
    pyhton 打印菱形
    三元运算
    Python代码书写规范
    DDT驱动
    使用 JsonPath 完成接口自动化测试中参数关联和数据验证(Python语言)
    数据类型(字典)
  • 原文地址:https://www.cnblogs.com/cslgzl/p/10471393.html
Copyright © 2011-2022 走看看