国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

POI-Microsoft Office讀寫(xiě)支持

2019-11-15 00:00:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
POI-Microsoft Office讀寫(xiě)支持

最近做一個(gè)小項(xiàng)目,中間有一個(gè)環(huán)節(jié)是將集合里的數(shù)據(jù)保存到本地Excel文件中、將本地Excel文件讀取到集合里面

POI’

  簡(jiǎn)單說(shuō)一下吧:POI是apache提供的,對(duì)Microsoft Office格式的文檔提供讀寫(xiě)支持!

  • HSSF - 提供讀寫(xiě)Microsoft Excel格式檔案的功能。
  • XSSF - 提供讀寫(xiě)MicrosoftExcelOOxml格式檔案的功能。
  • HWPF - 提供讀寫(xiě)Microsoft Word格式檔案的功能。
  • HSLF - 提供讀寫(xiě)Microsoft Powerpoint格式檔案的功能。
  • HDGF - 提供讀寫(xiě)Microsoft Visio格式檔案的功能。
    要對(duì)Excel進(jìn)行讀取,首先得下載架包:poi-**-**.jar    以項(xiàng)目中我遇到的兩個(gè)業(yè)務(wù)為例:  1、將數(shù)據(jù)導(dǎo)入Excel  
 1 ** 2  * excel 工具類(lèi) 3  * 提供:導(dǎo)入Excel 和 導(dǎo)出Excel方法  4  * @author Marvel 5  * 6  */ 7 public class ExcelTool { 8     PRivate static HSSFCell cell; //列 9     private static HSSFWorkbook hwb; //Excel對(duì)象10     private static HSSFSheet sheet; //工作夾11     private static HSSFRow row; //行12     13     14     /**15      * 導(dǎo)入Excel16      * @param strs 標(biāo)題17      * @param list 集合18      * @param path 保存路徑/文件名.xls19      * @throws Exception20      */21     public static Integer ToExcel(List<Object[]> list,String path) throws Exception{22         //創(chuàng)建Excel文檔、此時(shí)內(nèi)容在內(nèi)存中23         hwb=new HSSFWorkbook();24         //sheet 對(duì)應(yīng)創(chuàng)建一個(gè)工作夾;25         sheet=hwb.createSheet("debug.factory");26         //打印行27         for(int i=0;i<list.size();i++){28             //創(chuàng)建一行29             row=sheet.createRow(i);30             //得到一行數(shù)據(jù)31             Object []objs=(Object[])list.get(i);32             //打印列33             for(int a=0;a<objs.length;a++){34                 //創(chuàng)建一列35                 cell= row.createCell(a);36                 //設(shè)值37                 cell.setCellValue(objs[a].toString());38             }39         }40         // 創(chuàng)建文件輸出流,準(zhǔn)備輸出電子表格41         OutputStream out = new FileOutputStream(path);42         hwb.write(out);43         out.close();44         return hwb.getSheetAt(0).getLastRowNum();45     }46 }

測(cè)試代碼:

 1 package com.dev4j.debug.test; 2  3 import static org.junit.Assert.*; 4  5 import java.util.ArrayList; 6 import java.util.List; 7  8 import org.junit.Before; 9 import org.junit.Test;10 11 import com.dev4j.debug.tool.ExcelTool;12 13 /**14  * 15  * @author Marvel16  *17  */18 public class ExcelToolTest {19     20     21     @Test22     public void testToExcel() throws Exception {23         List<Object[]> objs=new ArrayList<Object[]>();24         Object []obj=new Object[]{"張三","18","男"}; 25         objs.add(new Object[]{"姓名","年齡","性別"});26         objs.add(obj);27         28         //因?yàn)間etLastRowNum();返回的是最后一行數(shù)據(jù)的下標(biāo),0開(kāi)始的,所以這里返回下標(biāo)為129         assertEquals((long)1,(long)ExcelTool.ToExcel(objs, "E://test2.xls"));30     }31 32 }

2、導(dǎo)出Excel并且追加記錄

 1 /** 2      * 共同需要的 3      * @param lists 4      */ 5     public static void write(Integer startRow,List<Object[]> lists){ 6         for(int i=0;i<lists.size();i++){ 7             //創(chuàng)建一行 8             row=sheet.createRow(startRow+i); 9             //得到一行數(shù)據(jù)10             Object []objs=(Object[])lists.get(i);11             //打印列12             for(int a=0;a<objs.length;a++){13                 //創(chuàng)建一列14                 cell= row.createCell(a);15                 //設(shè)值16                 cell.setCellValue(objs[a].toString());17             }18         }19         20     }21     22     23     24     /**25      * 打開(kāi)文件并追加記錄26      * @param list27      * @param path28      * @return29      * @throws Exception30      */31     public static Integer appendExcel(List<Object[]> list,String path) throws Exception{32         //input流加載33         InputStream is = new FileInputStream(path);34         //創(chuàng)建hwb對(duì)象35         hwb = new HSSFWorkbook(is);36         //記錄下最后一行記錄下標(biāo),+1更新下一行寫(xiě)入下標(biāo)37         int lastRow=hwb.getSheetAt(0).getLastRowNum()+1;38         //循環(huán)創(chuàng)建39         write(lastRow,list);40         // 創(chuàng)建文件輸出流,準(zhǔn)備輸出電子表格41         OutputStream out = new FileOutputStream(path);42         hwb.write(out);43         out.close();44         return hwb.getSheetAt(0).getLastRowNum();45     }

之前寫(xiě)的代碼里面有重復(fù)的代碼段,提取出來(lái),寫(xiě)成write(Integer,List<Object[]>)方法

這是個(gè)簡(jiǎn)單的Excel讀寫(xiě)操作,快GET吧!


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 中宁县| 台北县| 永州市| 抚远县| 珠海市| 普兰店市| 图木舒克市| 镇安县| 南城县| 贡嘎县| 东宁县| 若羌县| 奈曼旗| 镇沅| 巴青县| 扶绥县| 资源县| 济宁市| 大宁县| 宝鸡市| 高要市| 徐州市| 甘孜| 南投市| 无锡市| 高陵县| 谢通门县| 苍梧县| 成武县| 来凤县| 大邑县| 南部县| 阳东县| 饶阳县| 南木林县| 温泉县| 阳曲县| 冷水江市| 绥滨县| 礼泉县| 新晃|