<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)航:
     
    主站蜘蛛池模板: 一区二区三区亚洲视频| 日韩精品人妻系列无码专区免费| 精品久久久久成人码免费动漫| 亚洲AV无码久久寂寞少妇| 精品国产免费一区二区三区| 2048亚洲精品国产| 国产成人免费AV在线播放| 亚洲五月综合缴情在线观看| 国产免费AV片在线观看| 久久久久亚洲AV成人无码网站| 免费看又黄又无码的网站| 亚洲成av人片不卡无码| 亚洲免费网站观看视频| 亚洲国产精品网站在线播放| 免费jjzz在线播放国产 | 国产亚洲综合成人91精品| 两性色午夜视频免费网| 亚洲视频精品在线| 最近中文字幕无吗免费高清| 狠狠入ady亚洲精品| 亚洲中文字幕无码爆乳av中文| 91视频免费观看| 91亚洲国产成人久久精品| 97无码免费人妻超级碰碰碰碰| 激情婷婷成人亚洲综合| 亚洲色成人中文字幕网站| 57pao一国产成永久免费| 亚洲七久久之综合七久久| 亚洲综合色区在线观看| 99精品免费观看| 亚洲av午夜电影在线观看| 国产亚洲精品看片在线观看 | 免费v片在线观看视频网站| 亚洲AV色无码乱码在线观看| 亚洲中文字幕无码一区| 美女视频黄的全免费视频| 欧亚一级毛片免费看| 亚洲综合综合在线| 亚洲福利在线播放| 99热在线免费播放| 老湿机一区午夜精品免费福利|