POIネイティブ導入読み出し方法EXCEL

  POIネイティブ導入読み出し方法EXCEL

  輸入org.apache.poi.hssf.usermodel *。;

  輸入org.apache.poi.poifs.filesystem.POIFSFileSystem;

  輸入java.io.FileInputStream;

  輸入java.io.FileNotFoundException。

  インポートにjava.io.IOException;

  輸入java.io.InputStreamを。

  輸入java.text.SimpleDateFormatの。

  輸入java.util.Date;

  輸入java.util.HashMapを;

  輸入java.util.Map;

  パブリッククラスReadExcelUtil {

  プライベートPOIFSFileSystem fsを、

  プライベートHSSFWorkbookのWB;

  プライベートHSSFSheetシート。

  プライベートHSSFRow行。

  / **

  * Excelのスプレッドシートのヘッダの内容を読みます

  * @paramです

  * @Return String配列ヘッダコンテンツ

  * /

  パブリック文字列[] readExcelTitle(入力ストリームです){

  {試します

  FS =新しいPOIFSFileSystem(です)。

  WB =新しいHSSFWorkbook(FS)。

  }キャッチ(IOExceptionを電子){

  e.printStackTrace();

  }

  シート= wb.getSheetAt(0)。

  //最初の行の行を取得します

  行= sheet.getRow(0)。

  //タイトルの列の合計数

  INT colNum引数= row.getPhysicalNumberOfCells()。

  String []型タイトル=新しいString [colNum引数];

  以下のために(INT i = 0; iはcolNum引数を<; iは++){

  タイトル[I] = getCellFormatValue()row.getCell((ショートI))。

  }

  タイトルを返します。

  }

  / **

  * Excel読み取りデータコンテンツ

  * @paramです

  セルデータの内容が含まれています* @Return地図Mapオブジェクト

  * /

  公共の地図readExcelContent(入力ストリームがあります){

  地図コンテンツ=新しいHashMapの();

  文字列str = "";

  文字列strCell = "";

  {試します

  FS =新しいPOIFSFileSystem(です)。

  WB =新しいHSSFWorkbook(FS)。

  }キャッチ(IOExceptionを電子){

  e.printStackTrace();

  }

  シート= wb.getSheetAt(0)。

  //行数を取得します

  INTたrowNum = sheet.getLastRowNum()。

  //第0行1行が開始2から、本明細書にインデックス組み込まれているので

  行= sheet.getRow(2)。

  INT colNum引数= row.getPhysicalNumberOfCells()。

  //体の含有量が第二の行から開始する必要があり、最初の行ヘッダータイトル

  以下のために(INT I = 2; I <=たrowNum、iは++){

  行= sheet.getRow(I)。

  int型J = 0;

  一方、(J <colNum引数){

  strCell = getStringCellValue(row.getCell(J))。

  STR + = strCell + " - ";

  // STR + = row.getCell((ショート)J)+ "^";

  J ++;

  }

  content.put(I、STR);

  STR = "";

  }

  コンテンツを返します。

  }

  / **

  *セルデータのコンテンツタイプの文字列データを取得

  *

  * @ParamセルExcelのセル

  * @Return文字列のセルのデータ内容

  * /

  プライベート文字列getStringCellValue(HSSFCell細胞){

  文字列strCell = "";

  スイッチ(cell.getCellType()){

  ケースHSSFCell.CELL_TYPE_STRING:

  strCell = cell.getStringCellValue()。

  ブレーク;

  ケースHSSFCell.CELL_TYPE_NUMERIC:

  strCell = String.valueOf((INT)cell.getNumericCellValue())。

  ブレーク;

  ケースHSSFCell.CELL_TYPE_BOOLEAN:

  strCell = String.valueOf(cell.getBooleanCellValue())。

  ブレーク;

  ケースHSSFCell.CELL_TYPE_BLANK:

  strCell = "";

  ブレーク;

  デフォルト:

  strCell = "";

  ブレーク;

  }

  IF(strCell.equals( "")|| strCell == NULL){

  「」を返します。

  }

  IF(セル== NULL){

  「」を返します。

  }

  strCellを返します。

  }

  / **

  *データ型日付のセルのデータ内容を取得

  *

  * @paramセル

  * Excelのセル

  * @Return文字列のセルのデータ内容

  * /

  プライベート文字列getDateCellValue(HSSFCell細胞){

  文字列の結果=「」;

  {試します

  INT細胞タイプ= cell.getCellType()。

  IF(cellType == HSSFCell.CELL_TYPE_NUMERIC){

  日付日付= cell.getDateCellValue();

  結果=(date.getYear()+ 1900)+ " - " +(date.getMonth()+ 1)

  + " - " + date.getDate()。

  }そうであれば(cellType == HSSFCell.CELL_TYPE_STRING){

  文字列、日付= getStringCellValue(セル)

  結果は= date.replaceAll( "[年月]"、 " - ")( ""、 "日")を置き換える.trim()。

  }そうであれば(cellType == HSSFCell.CELL_TYPE_BLANK){

  結果= "";

  }

  }キャッチ(例外e){

  System.out.println(「日付の形式が正しくありません!」);

  e.printStackTrace();

  }

  結果を返します。

  }

  / **

  *データ・セット・タイプHSSFCell

  * @paramセル

  * @return

  * /

  プライベート文字列getCellFormatValue(HSSFCell細胞){

  文字列のcellvalue = "";

  もし(セル!= NULL){

  電池の電流//タイプの分析

  スイッチ(cell.getCellType()){

  //現在のセルタイプの場合NUMERICへ

  ケースHSSFCell.CELL_TYPE_NUMERIC:

  ケースHSSFCell.CELL_TYPE_FORMULA:{

  //現在のセルが日付であるかどうかを判断します

  IF(HSSFDateUtil.isCellDateFormatted(セル)){

  日付日付= cell.getDateCellValue();

  SimpleDateFormatの自衛隊=新しいてSimpleDateFormat( "YYYY-MM-DD");

  CellValue = sdf.format(日付)。

  } 無錫ウィメンズ病院×××http://wapyyk.39.net/wx/zonghe/fc96e.html

  //それは純粋なデジタルの場合

  他の{

  //セルの現在の値を取得します。

  cellvalue = String.valueOf(cell.getNumericCellValue())。

  }

  ブレーク;

  }

  //現在のセルタイプがSTRINある場合

  ケースHSSFCell.CELL_TYPE_STRING:

  //現在の文字列のセルを取得します。

  cellvalue = cell.getRichStringCellValue()のgetString()。

  ブレーク;

  //デフォルト値セル

  デフォルト:

  cellvalue = "「;

  }

  }他{

  cellvalue = "";

  }

  cellvalueを返します。

  }

  パブリック静的無効メイン(文字列[] args){

  {試します

  // Excelスプレッドシートのタイトルテストを読むには

  InputStreamが=新しいFileInputStreamを( "D:\\ TEST2.XLS")です。

  ReadExcelUtil excelReader =新しいReadExcelUtil();

  文字列[]タイトル= excelReader.readExcelTitle(されます);

  System.out.println( "見出しExcelの表:");

  {(タイトル文字列S)のための

  System.out.print(S + "「);

  }

  System.out.println();

  // Excelスプレッドシートのコンテンツのテストを読むには

  InputStream IS2 =新しいFileInputStreamを( "D:\\ TEST2.XLS");

  地図マップ= excelReader.readExcelContent(IS2)。

  System.out.println(「Excelスプレッドシートの内容を取得:」);

  //ここにマージされたセルのXLSは、インデックスのために特別な処理を必要とするため、

  以下のために(INT I = 2; I <= map.size()+ 1; iは++){

  System.out.println(map.get(I));

  }

  }キャッチ(にFileNotFoundException電子){

  System.out.println(「指定されたパスがファイルに見つかりませんでした!」);

  e.printStackTrace();

  }

  }

  }


おすすめ

転載: blog.51cto.com/14335413/2403490