excel 解析 java_java解析Excel(xls、xlsx两种格式)
https://www.cnblogs.com/hhhshct/p/7255915.html
*********************************************************
一、需要導入的jar
1.commons-collections4-4.1.jar
2.poi-3.17-beta1.jar
3.poi-ooxml-3.17-beta1.jar
4.poi-ooxml-schemas-3.17-beta1.jar
5.xmlbeans-2.6.0.jar
maven
org.apache.poi
poi-ooxml
3.17
二、主要API
1.import org.apache.poi.ss.usermodel.Workbook,對應Excel文檔;
2.import org.apache.poi.hssf.usermodel.HSSFWorkbook,對應xls格式的Excel文檔;
3.import org.apache.poi.xssf.usermodel.XSSFWorkbook,對應xlsx格式的Excel文檔;
4.import org.apache.poi.ss.usermodel.Sheet,對應Excel文檔中的一個sheet;
5.import org.apache.poi.ss.usermodel.Row,對應一個sheet中的一行;
6.import org.apache.poi.ss.usermodel.Cell,對應一個單元格。
三、代碼如下
packagepoi;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importjava.io.InputStream;importjava.util.ArrayList;importjava.util.LinkedHashMap;importjava.util.List;importjava.util.Map;importjava.util.Map.Entry;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.Cell;importorg.apache.poi.ss.usermodel.DateUtil;importorg.apache.poi.ss.usermodel.Row;importorg.apache.poi.ss.usermodel.Sheet;importorg.apache.poi.ss.usermodel.Workbook;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classTestpoi {public static voidmain(String[] args) {
Workbook wb=null;
Sheet sheet= null;
Row row= null;
List> list = null;
String cellData= null;
String filePath= "D:\\test.xlsx";
String columns[]= {"name","age","score"};
wb=readExcel(filePath);if(wb != null){//用來存放表中數(shù)據(jù)
list = new ArrayList>();//獲取第一個sheet
sheet = wb.getSheetAt(0);//獲取最大行數(shù)
int rownum =sheet.getPhysicalNumberOfRows();//獲取第一行
row = sheet.getRow(0);//獲取最大列數(shù)
int colnum =row.getPhysicalNumberOfCells();for (int i = 1; i
Map map = new LinkedHashMap();
row=sheet.getRow(i);if(row !=null){for (int j=0;j
cellData=(String) getCellFormatValue(row.getCell(j));
map.put(columns[j], cellData);
}
}else{break;
}
list.add(map);
}
}//遍歷解析出來的list
for (Mapmap : list) {for (Entryentry : map.entrySet()) {
System.out.print(entry.getKey()+":"+entry.getValue()+",");
}
System.out.println();
}
}//讀取excel
public staticWorkbook readExcel(String filePath){
Workbook wb= null;if(filePath==null){return null;
}
String extString= filePath.substring(filePath.lastIndexOf("."));
InputStream is= null;try{
is= newFileInputStream(filePath);if(".xls".equals(extString)){return wb = newHSSFWorkbook(is);
}else if(".xlsx".equals(extString)){return wb = newXSSFWorkbook(is);
}else{return wb = null;
}
}catch(FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e) {
e.printStackTrace();
}returnwb;
}public staticObject getCellFormatValue(Cell cell){
Object cellValue= null;if(cell!=null){//判斷cell類型
switch(cell.getCellType()){caseCell.CELL_TYPE_NUMERIC:{
cellValue=String.valueOf(cell.getNumericCellValue());break;
}caseCell.CELL_TYPE_FORMULA:{//判斷cell是否為日期格式
if(DateUtil.isCellDateFormatted(cell)){//轉換為日期格式YYYY-mm-dd
cellValue =cell.getDateCellValue();
}else{//數(shù)字
cellValue =String.valueOf(cell.getNumericCellValue());
}break;
}caseCell.CELL_TYPE_STRING:{
cellValue=cell.getRichStringCellValue().getString();break;
}default:
cellValue= "";
}
}else{
cellValue= "";
}returncellValue;
}
}
四、運行結果
代碼運行前保證在D盤下有一個test.xlsx文檔,不然報文件找不到異常;Excel文檔中的表頭要和代碼中的String columns[] = {"name","age","score"}對應起來。
例2
importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importorg.apache.poi.xssf.usermodel.XSSFRow;importorg.apache.poi.xssf.usermodel.XSSFSheet;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;public classTestExcel {public static void main(String[] args) throwsIOException{//創(chuàng)建工作薄 xlsx
XSSFWorkbook xssWorkbook = newXSSFWorkbook();//創(chuàng)建工作表
XSSFSheet sheet = xssWorkbook.createSheet("sheet1");for (int row = 0; row < 10; row++)
{
XSSFRow rows=sheet.createRow(row);for (int col = 0; col < 10; col++)
{//向工作表中添加數(shù)據(jù)
rows.createCell(col).setCellValue("data" + row +col);
}
}// File xlsFile = new File("poi.xlsx");
FileOutputStream xlsStream= newFileOutputStream(xlsFile);
xssWorkbook.write(xlsStream);
}
}
總結
以上是生活随笔為你收集整理的excel 解析 java_java解析Excel(xls、xlsx两种格式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 爱美之心下一句是什么呢?
- 下一篇: 堵牙洞贵不贵啊,我是学生想知道大约一般多