POI技術
1.基本概念:POI:簡單的說就是對office的文檔進行讀和寫的工具,POI中的組件(HSSF和XSS)可以讀寫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技術