| 
 /* 
 * Created on 2004-11-5 
 * 
 * java读取excel文件 
 * 
 */ 
package readxls; 
import
java.io.FileInputStream; 
import java.io.FileOutputStream; 
import
java.text.DecimalFormat; 
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; 
/** 
 * 
 * @author shiwt 
 * 
 * java读取excel文件 
 * 
 *
一个Excel文件的层次:Excel文件->工作表->行->单元格
对应到POI中,为:workbook->sheet->row->cell 
 *  
 */ 
public class POItest { 
 public static
String outputFile = "e:\\test\\tels.xls"; 
 public static
String fileToBeRead = "e:\\test\\tels.xls"; 
 public void
CreateExcel() { 
  try { 
   //
创建新的Excel 工作簿 
   HSSFWorkbook
workbook = new HSSFWorkbook(); 
   //
在Excel工作簿中建一工作表,其名为缺省值 
   //
如要新建一名为"效益指标"的工作表,其语句为: 
   // HSSFSheet
sheet = workbook.createSheet("效益指标"); 
   HSSFSheet
sheet = workbook.createSheet(); 
   //
在索引0的位置创建行(最顶端的行) 
   HSSFRow row =
sheet.createRow((short) 0); 
   //在索引0的位置创建单元格(左上端) 
   HSSFCell cell
= row.createCell((short) 0); 
   //
定义单元格为字符串类型 
   cell.setCellType(HSSFCell.CELL_TYPE_STRING); 
   //
在单元格中输入一些内容 
   cell.setCellValue("sweater"); 
   //
新建一输出文件流 
   FileOutputStream
fOut = new FileOutputStream(outputFile); 
   //
把相应的Excel 工作簿存盘 
   workbook.write(fOut); 
   fOut.flush(); 
   //
操作结束,关闭文件 
   fOut.close(); 
   System.out.println("文件生成..."); 
  } catch
(Exception e) { 
   System.out.println("已运行
xlCreate() : " + e); 
  } 
 } 
 /** 
  * 
  *
读取excel,遍历各个小格获取其中信息,并判断其是否是手机号码,并对正确的手机号码进行显示 
  *  
  * 
  * 注意: 1.sheet,
以0开始,以workbook.getNumberOfSheets()-1结束 2.row, 
  * 以0开始(getFirstRowNum),以getLastRowNum结束
3.cell, 
  *
以0开始(getFirstCellNum),以getLastCellNum结束,
结束的数目不知什么原因与显示的长度不同,可能会偏长 
  *  
  */ 
 public void readExcel() { 
  //将被表示成1.3922433397E10的手机号转化为13922433397,不一定是最好的转换方法 
  DecimalFormat df = new
DecimalFormat("#"); 
  try { 
   //
创建对Excel工作簿文件的引用 
   HSSFWorkbook
workbook = new HSSFWorkbook(new FileInputStream( 
     fileToBeRead)); 
   //System.out 
   //  .println("===SheetsNum==="
+ workbook.getNumberOfSheets());//获取sheet数 
   for (int
numSheets = 0; numSheets < workbook.getNumberOfSheets();
numSheets++) { 
    if
(null != workbook.getSheetAt(numSheets)) { 
     HSSFSheet
aSheet = workbook.getSheetAt(numSheets);//获得一个sheet 
     //System.out.println("+++getFirstRowNum+++"
+ 
     //
aSheet.getFirstRowNum());// 
     //System.out.println("+++getLastRowNum+++"
+ 
     //
aSheet.getLastRowNum()); 
     for
(int rowNumOfSheet = 0; rowNumOfSheet <= aSheet 
       .getLastRowNum();
rowNumOfSheet++) { 
      if
(null != aSheet.getRow(rowNumOfSheet)) { 
       HSSFRow
aRow = aSheet.getRow(rowNumOfSheet); 
       //System.out.println(">>>getFirstCellNum<<<"+ 
       //
aRow.getFirstCellNum()); 
       //System.out.println(">>>getLastCellNum<<<"+ 
       //
aRow.getLastCellNum()); 
       for
(short cellNumOfRow = 0; cellNumOfRow <= aRow 
         .getLastCellNum();
cellNumOfRow++) { 
        if
(null != aRow.getCell(cellNumOfRow)) { 
         HSSFCell
aCell = aRow.getCell(cellNumOfRow); 
         int
cellType = aCell.getCellType(); 
         //System.out.println(cellType); 
         switch
(cellType) { 
         case
0://Numeric 
          String
strCell = df.format(aCell 
            .getNumericCellValue()); 
 
           System.out.println(strCell); 
           
          break; 
         case
1://String 
          strCell
= aCell.getStringCellValue(); 
 
           System.out.println(strCell); 
           
          break; 
         default: 
         //System.out.println("格式不对不读");//其它格式的数据 
         } 
        } 
       } 
      } 
     } 
    } 
   } 
  } catch
(Exception e) { 
   System.out.println("ReadExcelError"
+ e); 
  } 
 } 
  public static
void main(String[] args) { 
  POItest poi = new
POItest(); 
  //poi.CreateExcel(); 
  poi.readExcel(); 
 } 
} 
 |