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();
}
}
}