<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 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

             今日我們已經(jīng)將權(quán)限模塊與員工管理整合完畢,但下午有學(xué)習(xí)新的內(nèi)容。將數(shù)據(jù)導(dǎo)出為excel表格,或從excel表格導(dǎo)入數(shù)據(jù)。這一項(xiàng)功能比較常用!在Windows平臺(tái)下微軟有為我們提供OfficeCOM套件,Apache為我們提供的poi正是為Java打造的Office套件。

     

             微軟的OfficeCOM套件與ApachePOI的用法十分相似,所以這部分內(nèi)容對(duì)我來(lái)說(shuō)比較容易。我想大家學(xué)習(xí)的都很輕松,因?yàn)樗闷饋?lái)十分簡(jiǎn)單。在我們開(kāi)始之前需要先下載POIjar包:http://poi.apache.org/

     

    一、POI(或OfficeCOM)結(jié)構(gòu)

             首先想一下Microsoft Excel 的工作表,它的結(jié)構(gòu)是什么?想想...

     

             哦,首先有一個(gè)以xls為后綴名的文件,打開(kāi)文件看到多個(gè)sheet(表單),每個(gè)表單中有無(wú)數(shù)個(gè)單元格。

     

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

            

    二、創(chuàng)建excel文件

             我們?cè)趧?chuàng)建excel文件時(shí),需要先創(chuàng)建*.xls文件(在POI中為Workbook),然后創(chuàng)建Sheet,然后創(chuàng)建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;

     

    /**

     * 測(cè)試類,每個(gè)方法都是獨(dú)立的。

     * @author Administrator

     *

     */

    public class ExportExcel {

     

           /**

            * 測(cè)試WorkBook

            * @throws Exception

            */

           @Test

           public void testCreateExcel() throws Exception{

                  // 創(chuàng)建Workbook

                  Workbook wb = new HSSFWorkbook();

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

                  // 寫出到文件

                  wb.write(fileOut);

                  fileOut.close();

           }

          

           /**

            * 測(cè)試Sheet

            * @throws Exception

            */

           @Test

           public void testCreateSheet() throws Exception{

                  Workbook wb = new HSSFWorkbook();

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

                  // 創(chuàng)建sheet

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

                  // 設(shè)置第1列寬度,列號(hào)以0開(kāi)始。

                  sheet.setColumnWidth(0,10000);        

                  wb.write(fileOut);

                  fileOut.close();

           }

          

           /**

            * 測(cè)試Cell

            * @throws Exception

            */

           @Test

           public void testCreateCell() throws Exception{

                  Workbook wb = new HSSFWorkbook();

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

                  // 創(chuàng)建sheet

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

                  // 設(shè)置第1列寬度

                  sheet.setColumnWidth(0,10000);

                  // 創(chuàng)建一行,行號(hào)以0開(kāi)始。

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

                  // 創(chuàng)建一個(gè)單元格,參數(shù)為列號(hào)。

               Cell cell = row.createCell(0);

               cell.setCellStyle(style);

               // 向單元格中添加各種類型數(shù)據(jù)

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

           }

    }

             通過(guò)上面可見(jiàn),我們必須一個(gè)單元格一個(gè)單元格的創(chuàng)建并添加數(shù)據(jù)。在實(shí)際應(yīng)用中,尤其是辦公應(yīng)用,經(jīng)常需要將數(shù)據(jù)導(dǎo)出為excel文件,我們可以通過(guò)POI實(shí)現(xiàn)。還有很多的行業(yè)軟件使用專業(yè)的報(bào)表組件而非excel文件,那時(shí)我們就需要使用那個(gè)報(bào)表組件為我們提供的API才能實(shí)現(xiàn)對(duì)數(shù)據(jù)的導(dǎo)出或打印操作。

     

             我們知道單元格的屬性比較多,如邊框和字體等,所以對(duì)cell操作的API就比較多。我們?cè)谶@就不一一詳細(xì)列舉了,ApachePOI的文檔十分詳細(xì)!

     

    二、讀取excel文件

             我們創(chuàng)建excel文件時(shí)需要一個(gè)單元格一個(gè)單元格的創(chuàng)建并添加數(shù)據(jù),同樣我們讀取excel文件時(shí)也需要一個(gè)一個(gè)單元格的讀取。某些情況下,需要將excel文件中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)中。注意此時(shí)的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;

     

    /**

     * 測(cè)試類

     * @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開(kāi)始。

                  Sheet sheet = wb.getSheetAt(0);

                  // 遍歷所有Row

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

                         Row row = items.next();

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

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

                  }

                  // 關(guān)閉文件

                  inp.close();

           }

    }

     

             用起來(lái)十分簡(jiǎn)單,明天還有好玩的!

     


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩成人免费aa在线看| 久久精品a亚洲国产v高清不卡 | 一级女性全黄生活片免费看| 久久精品亚洲日本波多野结衣 | 国产又黄又爽胸又大免费视频| 一进一出60分钟免费视频| 黄色网址在线免费| 亚洲综合视频在线观看| 日本亚洲免费无线码| igao激情在线视频免费| 久久WWW免费人成人片| 青娱乐免费视频在线观看| 69影院毛片免费观看视频在线| 三年片在线观看免费观看高清电影| 亚洲国产精品无码久久青草 | 美女视频黄频a免费| av片在线观看永久免费| 国产免费毛不卡片| 亚洲宅男天堂在线观看无病毒| 亚洲成a人片7777| 美女被免费网站在线视频免费| 在线永久看片免费的视频| 久久精品免费一区二区| 亚洲无码视频在线| 亚洲综合欧美色五月俺也去| 亚洲av永久无码精品三区在线4| 亚洲国产日韩精品| 99免费视频观看| 国产精品免费观看| 亚洲一区二区三区AV无码| 亚洲av无码专区在线电影| 2021在线观看视频精品免费| 国产成人综合亚洲亚洲国产第一页 | 亚洲国产精品热久久| 自拍偷自拍亚洲精品第1页 | 暖暖免费中文在线日本| 无遮挡国产高潮视频免费观看| 午夜亚洲国产精品福利| 无遮免费网站在线入口| 久久亚洲美女精品国产精品| 国产在线播放线91免费|