<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();

           }

    }

     

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

     


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


    網站導航:
     
    主站蜘蛛池模板: 1区1区3区4区产品亚洲| 亚洲日韩精品无码专区网址| 亚洲婷婷在线视频| 污视频在线免费观看| 亚洲视频一区在线播放| 18观看免费永久视频| 亚洲人成777在线播放| 永久免费av无码不卡在线观看| 亚洲乱码一二三四区乱码| 久久受www免费人成_看片中文| 亚洲噜噜噜噜噜影院在线播放| 欧美日韩国产免费一区二区三区 | 18未年禁止免费观看| 亚洲AV无码国产精品色午友在线| 久久国产福利免费| 久久精品国产亚洲AV果冻传媒| 1a级毛片免费观看| 亚洲国产成人AV网站| 久久精品国产精品亚洲下载| 美女视频黄的免费视频网页| 亚洲成人黄色在线| 国产精品免费_区二区三区观看| 一道本不卡免费视频| 亚洲国产一区二区三区青草影视| 97视频免费在线| 色费女人18女人毛片免费视频| 国外亚洲成AV人片在线观看 | 亚洲精品午夜久久久伊人| 免费无码AV片在线观看软件| 老司机福利在线免费观看| 久久精品国产亚洲综合色| 91免费播放人人爽人人快乐| 国产亚洲精品91| 亚洲视频日韩视频| 国产区卡一卡二卡三乱码免费 | 亚洲日本在线免费观看| 亚洲国产精华液2020| 亚洲国产日韩在线视频| 免费黄色网址入口| 国产免费网站看v片在线| 亚洲综合一区二区三区四区五区|