zhyiwww
          用平實的筆,記錄編程路上的點點滴滴………
          posts - 536,comments - 394,trackbacks - 0
          <2009年6月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          -------------------------------------------
          崇尚原創精神,
          文章歡迎轉載,
          請您注明出處,
          在此特別聲明。
          版權所有@zhyiwww
          引用鏈接
          http://www.aygfsteel.com/zhyiwww

          --------------------------------------------

          常用鏈接

          留言簿(33)

          隨筆分類(626)

          朋友的博客

          最新隨筆

          搜索

          •  

          積分與排名

          • 積分 - 1558781
          • 排名 - 11

          最新評論

          閱讀排行榜

          評論排行榜


          用apache POI 操作 Excel有幾個關鍵的地方:

          [1]讀文件流
          這個問題是一個IO問題
          InputStream in = new FileInputStream("/tmp/aaa.xls");

          [2]如何取得Excel的操作對象
          這個也就相當于,Excel的工作區,在這個里面你可以取得當前excel文件的相關信息
          ??? ??? ??? ??? POIFSFileSystem poifs = new POIFSFileSystem(fis);
          ??? ??? ??? ??? HSSFWorkbook wb = new HSSFWorkbook(poifs);

          HSSFWorkbook 對象,是我們最想得到的對象。
          以后的所有操作都是從這里開始的。

          [3]如何取得sheet的數目

          wb.getNumberOfSheets()

          [4]如何根據index取得sheet對象

          ??? ??? HSSFSheet sheet = wb.getSheetAt(0);

          有了Sheet就相當于取得了一張表一樣。


          [5]如何取得有效的行數

          ??? ??? int rowcount = sheet.getLastRowNum();

          [6]如何根據index取得行對象

          HSSFRow row = sheet.getRow(i);

          有了行對象,就可以取得每一個單元對象

          [7]如何知道一個行有多少個單元
          colcount = row.getLastCellNum();


          [8]如何取得一個單元對象

          HSSFCell cell = row.getCell(j);

          [9]如何取得單元的值
          此處僅以字符串為例
          ??? ??? ??? ??? ??? if(cell!=null){
          ??? ??? ??? ??? ??? ??? ??? ??? System.out.println("cell is: "+cell.getStringCellValue());
          ??? ??? ??? ??? ??? ??? ??? }

          下面是我的測試的完整的程序。我也是從網上找的資料,然后自己又做了測試。在此又做了整理。
          感謝網上提供此參考資料的朋友。

          package demo.excel;


          import java.io.File;
          import java.io.FileInputStream;
          import java.io.FileNotFoundException;
          import java.io.IOException;
          import java.io.InputStream;
          import java.util.ArrayList;
          import java.util.List;

          import org.apache.poi.hssf.eventusermodel.HSSFRequest;
          import org.apache.poi.hssf.model.Sheet;
          import org.apache.poi.hssf.model.Workbook;
          import org.apache.poi.hssf.usermodel.HSSFCell;
          import org.apache.poi.hssf.usermodel.HSSFRow;
          import org.apache.poi.hssf.usermodel.HSSFSheet;
          import org.apache.poi.hssf.usermodel.HSSFWorkbook;
          import org.apache.poi.poifs.filesystem.POIFSFileSystem;

          public class ExcelDemo {

          ??? public static void main(String[] args) {

          ??? ??? File f = new File("/home/zhangyi/dell500.xls");

          ??? ??? if (f.exists()) {

          ??? ??? ??? // read
          ??? ??? ??? try {
          ??? ??? ??? ??? InputStream fis = new FileInputStream(f);

          ??? ??? ??? ??? POIFSFileSystem poifs = new POIFSFileSystem(fis);
          ??? ??? ??? ??? HSSFWorkbook wb = new HSSFWorkbook(poifs);

          ??? ??? ??? ??? List retList = new ArrayList();

          ??? ??? ??? ??? System.out.println("sheet number : " + wb.getNumberOfSheets());
          ??? ??? ??? ???
          ??? ??? ??? ???
          ??? ??? ??? ??? HSSFSheet s = wb.getSheetAt(0);
          ??? ??? ??? ??? System.out.println("sheet obj is : "+s);
          ??? ??? ??? ???
          ??? ??? ??? ???
          ??? ??? ??? ???
          ??? ??? ??? ???
          ??? ??? ??? ??? for (int h = 0; h < wb.getNumberOfSheets(); ++h) {
          ??? ??? ??? ??? ??? List list = new ArrayList();

          ??? ??? ??? ??? ??? HSSFSheet sheet = wb.getSheetAt(h);
          ??? ??? ??? ??? ??? int rowcount = sheet.getLastRowNum();
          ??? ??? ??? ??? ??? rowcount++;
          ??? ??? ??? ??? ??? System.out.print("-----sheet[" + h + "]: row count = "
          ??? ??? ??? ??? ??? ??? ??? + rowcount);

          ??? ??? ??? ??? ???
          ??? ??? ??? ??? ??? int colcount = 0;
          ??? ??? ??? ??? ??? for (int i = 0; i < rowcount; ++i) {
          ??? ??? ??? ??? ??? ??? HSSFRow row = sheet.getRow(i); // i=0 indicate the first
          ??? ??? ??? ??? ???
          ??? ??? ??? ??? ??? ??? // row
          ??? ??? ??? ??? ??? ??? if (row == null)
          ??? ??? ??? ??? ??? ??? ??? continue; // without the row, break and continue;
          ??? ??? ??? ??? ??? ???
          ??? ??? ??? ??? ??? ??? if (colcount == 0) { // colunm count set to column of
          ??? ??? ??? ??? ??? ??? ??? // the first effective row
          ??? ??? ??? ??? ??? ??? ??? colcount = row.getLastCellNum();
          ??? ??? ??? ??? ??? ??? ??? System.out.println(", column count = " + colcount);
          ??? ??? ??? ??? ??? ??? }

          ??? ??? ??? ??? ??? ??? String[] fieldValue = new String[colcount];
          ??? ??? ??? ??? ??? ???
          ??? ??? ??? ??? ??? ??? for (short j = 0; j < colcount; ++j) { // column data in
          ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? // the current

          ??? ??? ??? ??? ??? ??? ??? HSSFCell cell = row.getCell(j);
          ??? ??? ??? ??? ??? ??? ??? // fieldValue[j] = getCellStringValue(cell);
          ??? ??? ??? ??? ??? ??? ??? if(cell!=null){
          ??? ??? ??? ??? ??? ??? ??? ??? System.out.println("cell is: "+cell.getStringCellValue());
          ??? ??? ??? ??? ??? ??? ??? }
          //??? ??? ??? ??? ??? ??? ??? System.out.println("cell is : " +cell.getCellComment());
          ??? ??? ??? ??? ??? ??? ???
          ??? ??? ??? ??? ??? ??? }

          ??? ??? ??? ??? ??? ??? list.add(fieldValue);
          ??? ??? ??? ??? ??? }

          ??? ??? ??? ??? ??? retList.add(list);
          ??? ??? ??? ??? }

          ??? ??? ??? } catch (FileNotFoundException e) {
          ??? ??? ??? ??? // TODO Auto-generated catch block
          ??? ??? ??? ??? e.printStackTrace();
          ??? ??? ??? } catch (IOException e) {
          ??? ??? ??? ??? // TODO Auto-generated catch block
          ??? ??? ??? ??? e.printStackTrace();
          ??? ??? ??? }

          ??? ??? }

          ??? }

          }




          |----------------------------------------------------------------------------------------|
                                     版權聲明  版權所有 @zhyiwww
                      引用請注明來源 http://www.aygfsteel.com/zhyiwww   
          |----------------------------------------------------------------------------------------|
          posted on 2009-06-24 16:10 zhyiwww 閱讀(674) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 高阳县| 靖州| 轮台县| 乌兰察布市| 察哈| 镇赉县| 酒泉市| 穆棱市| 五莲县| 灵台县| 尉犁县| 镇赉县| 大宁县| 额尔古纳市| 渑池县| 义马市| 长海县| 满洲里市| 家居| 定结县| 康定县| 廉江市| 延吉市| 柳林县| 镇雄县| 武宁县| 彭水| 广东省| 怀安县| 临洮县| 安吉县| 永胜县| 涿鹿县| 吉林市| 莱州市| 贵定县| 扶风县| 台北县| 布尔津县| 抚顺市| 鸡泽县|