<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

             今日我們已經將權限模塊與員工管理整合完畢,但下午有學習新的內容。將數據導出為excel表格,或從excel表格導入數據。這一項功能比較常用!在Windows平臺下微軟有為我們提供OfficeCOM套件,Apache為我們提供的poi正是為Java打造的Office套件。

     

             微軟的OfficeCOM套件與ApachePOI的用法十分相似,所以這部分內容對我來說比較容易。我想大家學習的都很輕松,因為它用起來十分簡單。在我們開始之前需要先下載POIjar包:http://poi.apache.org/

     

    一、POI(或OfficeCOM)結構

             首先想一下Microsoft Excel 的工作表,它的結構是什么?想想...

     

             哦,首先有一個以xls為后綴名的文件,打開文件看到多個sheet(表單),每個表單中有無數個單元格。

     

             OK,通過上面一斷話,我們找出了三個核心單元,由廣入微依次為:*.xls文件、sheet表單、單元格。我們使用Office套件正是以這三個核心單元為操作主體。

            

    二、創建excel文件

             我們在創建excel文件時,需要先創建*.xls文件(在POI中為Workbook),然后創建Sheet,然后創建row(cells)

    package cn.itcast.cc.excel.exports;

     

    import java.io.FileOutputStream;

    import java.util.Date;

    import org.apache.poi.hssf.usermodel.HSSFCell;

    import org.apache.poi.hssf.usermodel.HSSFWorkbook;

    import org.apache.poi.ss.usermodel.Cell;

    import org.apache.poi.ss.usermodel.CellStyle;

    import org.apache.poi.ss.usermodel.IndexedColors;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.junit.Test;

     

    /**

     * 測試類,每個方法都是獨立的。

     * @author Administrator

     *

     */

    public class ExportExcel {

     

           /**

            * 測試WorkBook

            * @throws Exception

            */

           @Test

           public void testCreateExcel() throws Exception{

                  // 創建Workbook

                  Workbook wb = new HSSFWorkbook();

                  FileOutputStream fileOut = new FileOutputStream("C:/workbook.xls");

                  // 寫出到文件

                  wb.write(fileOut);

                  fileOut.close();

           }

          

           /**

            * 測試Sheet

            * @throws Exception

            */

           @Test

           public void testCreateSheet() throws Exception{

                  Workbook wb = new HSSFWorkbook();

                  FileOutputStream fileOut = new FileOutputStream("C:/workbook.xls");

                  // 創建sheet

                  Sheet sheet = wb.createSheet("HelloWorld!");

                  // 設置第1列寬度,列號以0開始。

                  sheet.setColumnWidth(0,10000);        

                  wb.write(fileOut);

                  fileOut.close();

           }

          

           /**

            * 測試Cell

            * @throws Exception

            */

           @Test

           public void testCreateCell() throws Exception{

                  Workbook wb = new HSSFWorkbook();

                  FileOutputStream fileOut = new FileOutputStream("C:/workbook.xls");

                  // 創建sheet

                  Sheet sheet = wb.createSheet("HelloWorld!");

                  // 設置第1列寬度

                  sheet.setColumnWidth(0,10000);

                  // 創建一行,行號以0開始。

                  Row row = sheet.createRow(0);

                  // 單元格的樣式屬性

               CellStyle style = wb.createCellStyle();

               // 底邊表格線

               style.setBorderBottom(CellStyle.BORDER_DOUBLE);

               style.setBottomBorderColor(IndexedColors.RED.getIndex());

               style.setDataFormat(wb.getCreationHelper().createDataFormat().getFormat("m/d/yy h:mm"));

                  // 創建一個單元格,參數為列號。

               Cell cell = row.createCell(0);

               cell.setCellStyle(style);

               // 向單元格中添加各種類型數據

               cell.setCellValue(new Date());

               row.createCell(1).setCellValue(1.1);

               row.createCell(2).setCellValue("文本型");

               row.createCell(3).setCellValue(true);

               row.createCell(4).setCellType(HSSFCell.CELL_TYPE_ERROR);

              

               wb.write(fileOut);

                  fileOut.close();

           }

    }

             通過上面可見,我們必須一個單元格一個單元格的創建并添加數據。在實際應用中,尤其是辦公應用,經常需要將數據導出為excel文件,我們可以通過POI實現。還有很多的行業軟件使用專業的報表組件而非excel文件,那時我們就需要使用那個報表組件為我們提供的API才能實現對數據的導出或打印操作。

     

             我們知道單元格的屬性比較多,如邊框和字體等,所以對cell操作的API就比較多。我們在這就不一一詳細列舉了,ApachePOI的文檔十分詳細!

     

    二、讀取excel文件

             我們創建excel文件時需要一個單元格一個單元格的創建并添加數據,同樣我們讀取excel文件時也需要一個一個單元格的讀取。某些情況下,需要將excel文件中的數據導入到數據庫中。注意此時的excel文件中表格格式必須是指定格式。

     

    package cn.itcast.cc.excel.imports;

     

    import java.io.FileInputStream;

    import java.io.InputStream;

    import java.util.Iterator;

    import org.apache.poi.ss.usermodel.Row;

    import org.apache.poi.ss.usermodel.Sheet;

    import org.apache.poi.ss.usermodel.Workbook;

    import org.apache.poi.ss.usermodel.WorkbookFactory;

    import org.junit.Test;

     

    /**

     * 測試類

     * @author Administrator

     *

     */

    public class ImportExcel {

          

           /**

            * 讀取excel文件

            * @throws Exception

            */

           @Test

           public void testReadExcel() throws Exception {

                  // 讀入文件

                  InputStream inp = new FileInputStream("C:/workbook.xls");

                  Workbook wb = WorkbookFactory.create(inp);

                  // 獲取Sheet,索引從0開始。

                  Sheet sheet = wb.getSheetAt(0);

                  // 遍歷所有Row

                  for(Iterator<Row> items = sheet.rowIterator(); items.hasNext();){

                         Row row = items.next();

                         // 我們本可以使用row.cellIterator()遍歷每一個Cell,但我們需要獲取具體類型的數據

                         System.out.println(row.getCell(0).getDateCellValue());

                         System.out.println(row.getCell(1).getNumericCellValue());

                         System.out.println(row.getCell(2).getStringCellValue());

                         System.out.println(row.getCell(3).getBooleanCellValue());

                         System.out.println(row.getCell(4).getCellType());

                  }

                  // 關閉文件

                  inp.close();

           }

    }

     

             用起來十分簡單,明天還有好玩的!

     


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: xxxxx免费视频| 亚洲一卡二卡三卡四卡无卡麻豆| 四虎在线最新永久免费| caoporm超免费公开视频| 亚洲色偷偷色噜噜狠狠99| 中文字幕亚洲综合久久| 亚洲人成色777777在线观看| 国产免费131美女视频| 色妞WWW精品免费视频| 16女性下面无遮挡免费| 久久青草国产免费观看| 成在人线av无码免费高潮喷水 | 国产在线国偷精品免费看| 一级有奶水毛片免费看| 亚洲av无码偷拍在线观看| 亚洲中文无码av永久| 久久久久亚洲av无码专区| 亚洲成a人片在线观看日本| 亚洲中文字幕无码久久2017| 亚洲一级Av无码毛片久久精品| 亚洲黄片手机免费观看| www亚洲精品少妇裸乳一区二区 | 人人狠狠综合久久亚洲| jiz zz在亚洲| 亚洲中文无码mv| jiz zz在亚洲| 久久久久亚洲精品无码网址色欲| 亚洲精品自偷自拍无码| 亚洲av无码一区二区三区天堂 | 天堂在线免费观看中文版| 免费下载成人电影| 一区二区无码免费视频网站| 在线看片无码永久免费视频| 日本XXX黄区免费看| 久久久久久久久免费看无码| 成年女人午夜毛片免费视频| 国产高清免费在线| 亚洲不卡无码av中文字幕| 亚洲AV网站在线观看| 亚洲中文久久精品无码| 亚洲成在人天堂在线|