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

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

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

    dream.in.java

    能以不變應(yīng)萬變是聰明人做事的準(zhǔn)則。萬事從小事做起,積累小成功,問鼎大成功,是成功者的秘訣。

    Java讀寫Excel簡介[轉(zhuǎn)]

    Java讀寫Excel簡介
    作者:曹祺
    Email:Qi.Cao@Sun.Com
    Blog: http://blogs.sun.com/greysh 
    本文難度:入門 
    本文鏈接: http://developers.sun.com.cn/blog/functionalca/entry/java%E8%AF%BB%E5%86%99excel%E7%AE%80%E4%BB%8B  
    源代碼下載: http://developers.sun.com.cn/blog/functionalca/resource/Greysh/FCA_Greysh_Excel.zip  
    JXL官方網(wǎng)站: http://www.andykhan.com/jexcelapi/
    HSSF官方網(wǎng)站: http://poi.apache.org/spreadsheet/

    簡介
    Helloworld

    簡介
    Excel雖然最常用的電子表格軟件之一,但是由于微軟并未對Excel開源,因此給Java開發(fā)中帶來一些不便,除了用JNI去調(diào)用本地方法,另外一種方法就是用Java框架去解析Excel。開發(fā)中常用的框架為JXL,是Andy Khan開發(fā)的,詳情可以在他的個人主頁看到http://www.andykhan.com/,另外一個便是Apache和微軟聯(lián)合開發(fā)的,是屬于APACHE POI(http://poi.apache.org/spreadsheet/)項目的子項目。就筆者感覺,Andy Khan開發(fā)的比較小巧,適合小項目,而且調(diào)用比apache poi的hssf要方便。但是如果要使用很多高級功能的話,還是建議使用Apache的POI.本教程為入門教程,因此主要介紹調(diào)用的流程,如果想了解如何設(shè)置單元格樣式,可以訪問其官方網(wǎng)站。

    Helloworld

    完整代碼如下,開發(fā)環(huán)境:JXL為JExcelApi v2.6.9 .POI為poi-3.5-beta5-20090219.jar
    由于本文主要介紹如何講指定的數(shù)據(jù)讀取和寫入到指定的單元格,因此定義了個接口,包含讀取和寫入兩個方法。接口如下

    package com.greysh.excel.service;

    public interface ExcelService {
     
     public void write(int colum, int row, String content) throws Exception;

     public String read(int colum, int row)throws Exception;
    }

    然后用JXL讀取的話,類ExcelUtils來自的包為com.greysh.excel.jxl

    package com.greysh.excel.jxl;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import com.greysh.excel.service.ExcelService;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.write.Label;
    import jxl.write.WritableSheet;
    import jxl.write.WritableWorkbook;

    public class ExcelUtils implements ExcelService{
     private String path = "D:\\Excel.xls";
     
     public static void main(String[] args) throws Exception {
      ExcelUtils excelUtils = new ExcelUtils();
      String content = "Hello World";
      excelUtils.write(2, 3, content);
      String newContent = excelUtils.read(2, 3);
      System.out.println(newContent);

     }

     @Override
     public void write(int colum, int row, String content) throws Exception {
      FileOutputStream fileOutputStream = new FileOutputStream(path);
      WritableWorkbook writableWorkbook = Workbook
        .createWorkbook(fileOutputStream);
      WritableSheet writableSheet = writableWorkbook.createSheet("Excel", 0);
      Label label = new Label(colum, row, content);
      writableSheet.addCell(label);
      writableWorkbook.write();
      writableWorkbook.close();
      fileOutputStream.close();
     }

     @Override
     public String read(int colum, int row) throws Exception {
      FileInputStream fileInputStream = new FileInputStream(path);
      Workbook workbook = Workbook.getWorkbook(fileInputStream);
      Sheet sheet = workbook.getSheet(0);
      Cell cell = sheet.getCell(colum, row);
      String content = cell.getContents();
      workbook.close();
      fileInputStream.close();
      return content;
     }
    }
    如果用apache的poi讀取,為com.greysh.excel.poi的ExcelUtils類
    package com.greysh.excel.poi;

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.poifs.filesystem.POIFSFileSystem;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;

    import com.greysh.excel.service.ExcelService;

    public class ExcelUtils implements ExcelService {

     private String path = "D:\\ExcelPOI.xls";

     public static void main(String[] args) throws Exception {
      ExcelUtils excelUtils = new ExcelUtils();
      String content = "Hello Worlds";
      excelUtils.write(2, 3, content);
      String newContent = excelUtils.read(2, 3);
      System.out.println(newContent);
     }

     @Override
     public void write(int colum, int row, String content) throws Exception {
      Workbook workbook = new HSSFWorkbook();
      Sheet sheet = workbook.createSheet("Excel");
      Row rows = sheet.createRow(row);
      Cell cell = rows.createCell(colum);
      cell.setCellValue("Hello World");
      FileOutputStream fileOut = new FileOutputStream(path);
      workbook.write(fileOut);
      fileOut.close();

     }

     @Override
     public String read(int colum, int row) throws Exception {
      Workbook workbook = new HSSFWorkbook(new POIFSFileSystem(
        new FileInputStream(path)));
      Sheet sheet = workbook.getSheetAt(0);
      Row rows = sheet.getRow(row);
      Cell cell = rows.getCell(colum);
      String content = cell.getStringCellValue();
      return content;
     }
    }
    此段代碼修改自Apache的官方demo,對高級樣式進(jìn)行了精簡,如欲了解高級功能,例如單元格樣式,可以訪問http://poi.apache.org/spreadsheet/quick-guide.html

    對比以上兩種方式,我們可以總結(jié)出調(diào)用流程如下

    1打開工作文件Workbook,在此之前先用java的io流創(chuàng)建或者讀取文件
    2.打開工作表Sheet
    3.讀行,然后讀列。不過讀者請注意,行和列是從零開始的
    4.取得數(shù)據(jù)進(jìn)行操作

    本代碼運(yùn)行后會在控制臺打印出Hello World,同時D盤會生成Excel文件
    如果想了解如何設(shè)置單元格的顯示樣式或者讓單元格的內(nèi)容的數(shù)據(jù)格式不只是String,可以訪問JXL和POI的官方網(wǎng)站。

    posted on 2009-05-02 16:24 YXY 閱讀(236) 評論(0)  編輯  收藏


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲A∨无码一区二区三区| 大学生美女毛片免费视频| 二个人看的www免费视频| 免费人成视频在线观看免费| 亚洲hairy多毛pics大全| 亚洲精品国产高清在线观看| 亚洲欧美日韩一区二区三区| 亚洲国产精品网站在线播放| 亚洲av无码一区二区三区在线播放 | 亚洲精品人成无码中文毛片| 亚洲成A人片在线观看无码3D| 亚洲一区免费视频| 中文毛片无遮挡高潮免费| 毛片高清视频在线看免费观看| 久久久久久成人毛片免费看| 久久久久国产免费| 中文字幕a∨在线乱码免费看| 亚洲AV无码片一区二区三区| 麻豆亚洲AV成人无码久久精品 | 91免费福利视频| 欧洲人成在线免费| 成人福利免费视频| 在线播放免费人成视频在线观看| 99免费视频观看| 成人免费视频77777| 美女内射无套日韩免费播放| eeuss影院免费92242部| 成a人片亚洲日本久久| 人妻仑刮八A级毛片免费看| 亚洲男人的天堂网站| 免费看内射乌克兰女| 免费a级毛片无码a∨免费软件| 深夜免费在线视频| 美女视频免费看一区二区| 一级毛片a免费播放王色电影 | 777爽死你无码免费看一二区| 国产一区二区免费视频| 最近免费中文在线视频| 我想看一级毛片免费的| 亚洲人成网站免费播放| 免费人成在线观看网站视频 |