日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java读取excel某个单元格的值_java poi怎么获取excel单元格的内容

發(fā)布時間:2023/12/6 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java读取excel某个单元格的值_java poi怎么获取excel单元格的内容 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

展開全部

package?edu.sjtu.erplab.poi;

import?java.io.InputStream&ch=ww.xqy.chain"?target="_blank"?class="link-baike">FileInputStream;

import?java.io.FileNotFoundException;

import?java.io.IOException;

import?java.io.InputStream;

import?java.text.SimpleDateFormat;

import?java.util.Date;

import?java.util.HashMap;

import?java.util.Map;

import?org.apache.poi.hssf.usermodel.HSSFCell;

import?org.apache.poi.hssf.usermodel.HSSFDateUtil;

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;

/**

*?操作Excel表格的功能類

*/

public?class?ExcelReader?{

private?POIFSFileSystem?fs;

private?HSSFWorkbook?wb;

private?HSSFSheet?sheet;

private?HSSFRow?row;

/**

*?讀取Excel表格表頭的內(nèi)容

*?@32313133353236313431303231363533e78988e69d8331333365643662param?InputStream

*?@return?String?表頭內(nèi)容的數(shù)組

*/

public?String[]?readExcelTitle(InputStream?is)?{

try?{

fs?=?new?POIFSFileSystem(is);

wb?=?new?HSSFWorkbook(fs);

}?catch?(IOException?e)?{

e.printStackTrace();

}

sheet?=?wb.getSheetAt(0);

row?=?sheet.getRow(0);

//?標題總列數(shù)

int?colNum?=?row.getPhysicalNumberOfCells();

System.out.println("colNum:"?+?colNum);

String[]?title?=?new?String[colNum];

for?(int?i?=?0;?i?

//title[i]?=?getStringCellValue(row.getCell((short)?i));

title[i]?=?getCellFormatValue(row.getCell((short)?i));

}

return?title;

}

/**

*?讀取Excel數(shù)據(jù)內(nèi)容

*?@param?InputStream

*?@return?Map?包含單元格數(shù)據(jù)內(nèi)容的Map對象

*/

public?Map?readExcelContent(InputStream?is)?{

Map?content?=?new?HashMap();

String?str?=?"";

try?{

fs?=?new?POIFSFileSystem(is);

wb?=?new?HSSFWorkbook(fs);

}?catch?(IOException?e)?{

e.printStackTrace();

}

sheet?=?wb.getSheetAt(0);

//?得到總行數(shù)

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

row?=?sheet.getRow(0);

int?colNum?=?row.getPhysicalNumberOfCells();

//?正文內(nèi)容應(yīng)該從第二行開始,第一行為表頭的標題

for?(int?i?=?1;?i?<=?rowNum;?i++)?{

row?=?sheet.getRow(i);

int?j?=?0;

while?(j?

//?每個單元格的數(shù)據(jù)內(nèi)容用"-"分割開,以后需要時用String類的replace()方法還原數(shù)據(jù)

//?也可以將每個單元格的數(shù)據(jù)設(shè)置到一個javabean的屬性中,此時需要新建一個javabean

//?str?+=?getStringCellValue(row.getCell((short)?j)).trim()?+

//?"-";

str?+=?getCellFormatValue(row.getCell((short)?j)).trim()?+?"????";

j++;

}

content.put(i,?str);

str?=?"";

}

return?content;

}

/**

*?獲取單元格數(shù)據(jù)內(nèi)容為字符串類型的數(shù)據(jù)

*

*?@param?cell?Excel單元格

*?@return?String?單元格數(shù)據(jù)內(nèi)容

*/

private?String?getStringCellValue(HSSFCell?cell)?{

String?strCell?=?"";

switch?(cell.getCellType())?{

case?HSSFCell.CELL_TYPE_STRING:

strCell?=?cell.getStringCellValue();

break;

case?HSSFCell.CELL_TYPE_NUMERIC:

strCell?=?String.valueOf(cell.getNumericCellValue());

break;

case?HSSFCell.CELL_TYPE_BOOLEAN:

strCell?=?String.valueOf(cell.getBooleanCellValue());

break;

case?HSSFCell.CELL_TYPE_BLANK:

strCell?=?"";

break;

default:

strCell?=?"";

break;

}

if?(strCell.equals("")?||?strCell?==?null)?{

return?"";

}

if?(cell?==?null)?{

return?"";

}

return?strCell;

}

/**

*?獲取單元格數(shù)據(jù)內(nèi)容為日期類型的數(shù)據(jù)

*

*?@param?cell

*????????????Excel單元格

*?@return?String?單元格數(shù)據(jù)內(nèi)容

*/

private?String?getDateCellValue(HSSFCell?cell)?{

String?result?=?"";

try?{

int?cellType?=?cell.getCellType();

if?(cellType?==?HSSFCell.CELL_TYPE_NUMERIC)?{

Date?date?=?cell.getDateCellValue();

result?=?(date.getYear()?+?1900)?+?"-"?+?(date.getMonth()?+?1)

+?"-"?+?date.getDate();

}?else?if?(cellType?==?HSSFCell.CELL_TYPE_STRING)?{

String?date?=?getStringCellValue(cell);

result?=?date.replaceAll("[年月]",?"-").replace("日",?"").trim();

}?else?if?(cellType?==?HSSFCell.CELL_TYPE_BLANK)?{

result?=?"";

}

}?catch?(Exception?e)?{

System.out.println("日期格式不正確!");

e.printStackTrace();

}

return?result;

}

/**

*?根據(jù)HSSFCell類型設(shè)置數(shù)據(jù)

*?@param?cell

*?@return

*/

private?String?getCellFormatValue(HSSFCell?cell)?{

String?cellvalue?=?"";

if?(cell?!=?null)?{

//?判斷當前Cell的Type

switch?(cell.getCellType())?{

//?如果當前Cell的Type為NUMERIC

case?HSSFCell.CELL_TYPE_NUMERIC:

case?HSSFCell.CELL_TYPE_FORMULA:?{

//?判斷當前的cell是否為Date

if?(HSSFDateUtil.isCellDateFormatted(cell))?{

//?如果是Date類型則,轉(zhuǎn)化為Data格式

//方法1:這樣子的data格式是帶時分秒的:2011-10-12?0:00:00

//cellvalue?=?cell.getDateCellValue().toLocaleString();

//方法2:這樣子的data格式是不帶帶時分秒的:2011-10-12

Date?date?=?cell.getDateCellValue();

SimpleDateFormat?sdf?=?new?SimpleDateFormat("yyyy-MM-dd");

cellvalue?=?sdf.format(date);

}

//?如果是純數(shù)字

else?{

//?取得當前Cell的數(shù)值

cellvalue?=?String.valueOf(cell.getNumericCellValue());

}

break;

}

//?如果當前Cell的Type為STRIN

case?HSSFCell.CELL_TYPE_STRING:

//?取得當前的Cell字符串

cellvalue?=?cell.getRichStringCellValue().getString();

break;

//?默認的Cell值

default:

cellvalue?=?"?";

}

}?else?{

cellvalue?=?"";

}

return?cellvalue;

}

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

try?{

//?對讀取Excel表格標題測試

InputStream?is?=?new?FileInputStream("d:\\test2.xls");

ExcelReader?excelReader?=?new?ExcelReader();

String[]?title?=?excelReader.readExcelTitle(is);

System.out.println("獲得Excel表格的標題:");

for?(String?s?:?title)?{

System.out.print(s?+?"?");

}

//?對讀取Excel表格內(nèi)容測試

InputStream?is2?=?new?FileInputStream("d:\\test2.xls");

Map?map?=?excelReader.readExcelContent(is2);

System.out.println("獲得Excel表格的內(nèi)容:");

for?(int?i?=?1;?i?<=?map.size();?i++)?{

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

}

}?catch?(FileNotFoundException?e)?{

System.out.println("未找到指定路徑的文件!");

e.printStackTrace();

}

}

}

總結(jié)

以上是生活随笔為你收集整理的java读取excel某个单元格的值_java poi怎么获取excel单元格的内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。