1. 程式人生 > >POI技術

POI技術

lin 索引 eas sta load add 平時 public service

1.基本概念:POI:簡單的說就是對office的文檔進行讀和寫的工具,POI中的組件(HSSFXSS)可以讀寫excel,其中HSSF和XSS還是有區別的。HSSF:它是用來操作97格式的excel,擴展名為.xls,純二進制,最大行數65535。而XSS:它是用來操作2007格式的excel,擴展名為.xlsx,壓縮的xml ,最大無限行.開發中優先選.xls

2.基本案列:點擊上傳按鈕,實現excel數據的導入(給予maven開發)

2.1:引入坐標

2.2:創建對象(獲取工作薄),

打開工作表

獲取行(讀數據)

獲取格(讀數據)

實體類的封裝

在運用相應的技術保存數據

3.示例代碼:

//註入service

@Autowired

private AreaService areaService;

//導入excel數據

@Action("area_importData")

public String importData(){

//目標:讀excel,入庫

List<Area> areaList=new ArrayList<>();

try {

//技巧:平時怎麽讀,代碼怎麽寫。

//1.打開工作簿(97格式)

HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(upload));

//2.從工作簿中打開工作表

//workbook.getSheet("Sheet1");//根據名字讀取工作表

HSSFSheet sheet = workbook.getSheetAt(0);//g根據索引來讀取工作表0-based physical & logical

//3.一行一行讀

for (Row row : sheet) {

//第一行一般是標題,要跳過

if(row.getRowNum()==0){

continue;

}

//一格一格讀數據

String id = row.getCell(0).getStringCellValue();

String province = row.getCell(1).getStringCellValue();

String city = row.getCell(2).getStringCellValue();

String district = row.getCell(3).getStringCellValue();

String postcode = row.getCell(4).getStringCellValue();

//將值封裝到對象

Area area=new Area();

area.setId(id);

area.setProvince(province);

area.setCity(city);

area.setDistrict(district);

area.setPostcode(postcode);

//將對象填入集合

areaList.add(area);

}

//批量將區域保存到數據庫

areaService.saveArea(areaList);

} catch (Exception e) {

e.printStackTrace();

}

return NONE;

}

//坐標引入

<poi.version>3.17</poi.version>

<!-- Apache POI -->

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi</artifactId>

<version>${poi.version}</version>

</dependency>

<dependency>

<groupId>org.apache.poi</groupId>

<artifactId>poi-ooxml</artifactId>

<version>${poi.version}</version>

</dependency>

//註入service

@Autowired

private AreaService areaService;

//導入excel數據

@Action("area_importData")

public String importData(){

//目標:讀excel,入庫

List<Area> areaList=new ArrayList<>();

try {

//技巧:平時怎麽讀,代碼怎麽寫。

//1.打開工作簿(97格式)

HSSFWorkbook workbook=new HSSFWorkbook(new FileInputStream(upload));

//2.從工作簿中打開工作表

//workbook.getSheet("Sheet1");//根據名字讀取工作表

HSSFSheet sheet = workbook.getSheetAt(0);//g根據索引來讀取工作表0-based physical & logical

//3.一行一行讀

for (Row row : sheet) {

//第一行一般是標題,要跳過

if(row.getRowNum()==0){

continue;

}

//一格一格讀數據

String id = row.getCell(0).getStringCellValue();

String province = row.getCell(1).getStringCellValue();

String city = row.getCell(2).getStringCellValue();

String district = row.getCell(3).getStringCellValue();

String postcode = row.getCell(4).getStringCellValue();

//將值封裝到對象

Area area=new Area();

area.setId(id);

area.setProvince(province);

area.setCity(city);

area.setDistrict(district);

area.setPostcode(postcode);

//將對象填入集合

areaList.add(area);

}

//批量將區域保存到數據庫

areaService.saveArea(areaList);

} catch (Exception e) {

e.printStackTrace();

}

return NONE;

}

POI技術