POIインポートExcelファイルをデータベースにエクスポート
8498 ワード
JXLインポートExcelの练习をしたばかりなので、POIでExcelのインポートエクスポートを実现してみました.以下は自分のPOIインポートExcelのコードです.参考にしてください.间违いがあれば、友达を加えて検讨してください.QQ:84926183
1.対応するpoi jarパッケージをインポートし、3.7を使用します.
2.Excelファイルをデータのクラスにインポートする(ここではExcelファイルを解析する操作をクラスにカプセル化し、actionでそのクラスを呼び出せばよい):
練習をしているので、使い方をよく知っているだけで、ここでは簡単です.
3.Excelファイルとしてエクスポート:
以上、自分で書いたPOIインポートでExcelをエクスポートするすべてのコードです.
1.対応するpoi jarパッケージをインポートし、3.7を使用します.
2.Excelファイルをデータのクラスにインポートする(ここではExcelファイルを解析する操作をクラスにカプセル化し、actionでそのクラスを呼び出せばよい):
/**
* POI: Excel
* @param fis
* @return List Excel
*/
public static List importEmployeeByPoi(InputStream fis) {
// Excel List
List infos = new ArrayList();
// Excel BEAN.
EmployeeInfo employeeInfo = null;
try {
// Excel
HSSFWorkbook hwb = new HSSFWorkbook(fis);
//
HSSFSheet sheet = hwb.getSheetAt(0);
HSSFRow row = null;
//
DateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
// ,i getNumberOfSheets
for(int i = 0; i < hwb.getNumberOfSheets(); i++) {
sheet = hwb.getSheetAt(i);
// ,j getPhysicalNumberOfRows
for(int j = 1; j < sheet.getPhysicalNumberOfRows(); j++) {
row = sheet.getRow(j);
employeeInfo = new EmployeeInfo();
/* Excel ,
// 1:Excel double , Long ( , 。)
// double String , String '.' , Long 。
String orgId = row.getCell(0).toString();
String orgId1 = orgId.substring(0, orgId.indexOf('.'));
// 2: double (long)Double Long 。
employeeInfo.setOrgId((long)(row.getCell(0).getNumericCellValue()));
employeeInfo.setEmployeeNumber(row.getCell(1).toString());
employeeInfo.setFullName(row.getCell(2).toString());
employeeInfo.setSex(row.getCell(3).toString());
if(row.getCell(4) != null) {
try {
employeeInfo.setDateOfBirth(ft.parse(row.getCell(4).toString()));
} catch (ParseException e) {
e.printStackTrace();
}
}
employeeInfo.setTownOfBirth(row.getCell(5).toString());
employeeInfo.setNationalIdentifier(row.getCell(6).toString());*/
// getCellValue(HSSFCell cell) ,
if(ImportEmployee.getCellValue(row.getCell(0)) != null && !"".equals(ImportEmployee.getCellValue(row.getCell(0)))) {
employeeInfo.setOrgId(Long.valueOf(ImportEmployee.getCellValue(row.getCell(0))));
}
employeeInfo.setEmployeeNumber(ImportEmployee.getCellValue(row.getCell(1)));
employeeInfo.setFullName(ImportEmployee.getCellValue(row.getCell(2)));
employeeInfo.setSex(ImportEmployee.getCellValue(row.getCell(3)));
if(ImportEmployee.getCellValue(row.getCell(4)) != null && !"".equals(ImportEmployee.getCellValue(row.getCell(4)))) {
try {
employeeInfo.setDateOfBirth(ft.parse(ImportEmployee.getCellValue(row.getCell(4))));
} catch (ParseException e) {
e.printStackTrace();
}
employeeInfo.setTownOfBirth(ImportEmployee.getCellValue(row.getCell(5)));
}
employeeInfo.setNationalIdentifier(ImportEmployee.getCellValue(row.getCell(6)));
infos.add(employeeInfo);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return infos;
}
// Excel
private static String getCellValue(HSSFCell cell){
String value = null;
//
switch(cell.getCellType())
{
case HSSFCell.CELL_TYPE_STRING://
value = cell.getRichStringCellValue().getString();
break;
case HSSFCell.CELL_TYPE_NUMERIC://
long dd = (long)cell.getNumericCellValue();
value = dd+"";
break;
case HSSFCell.CELL_TYPE_BLANK:
value = "";
break;
case HSSFCell.CELL_TYPE_FORMULA:
value = String.valueOf(cell.getCellFormula());
break;
case HSSFCell.CELL_TYPE_BOOLEAN://boolean
value = String.valueOf(cell.getBooleanCellValue());
break;
case HSSFCell.CELL_TYPE_ERROR:
value = String.valueOf(cell.getErrorCellValue());
break;
default:
break;
}
return value;
}
アクションの書き方:練習をしているので、使い方をよく知っているだけで、ここでは簡単です.
// :
String excelPath = request.getParameter("excelPath");
//
InputStream fis = new FileInputStream(excelPath);
//JXL: Excel
// List infos = ImportEmployee.importEmployee(fis);
//POI: Excel
List infos = ImportEmployee.importEmployeeByPoi(fis);
// Excel
for(EmployeeInfo info:infos) {
// ( : ; : )
EmployeeInfo info1 = this.selectEmpByEmpNum(info.getEmployeeNumber());
if(info1 == null) {
//
this.service.addEmployeeInfo(info);
}else{
// personId
info.setPersonId(info1.getPersonId());
//
this.updatEmployeeInfo(info);
}
}
//
fis.close();
インポート全体の整合性のために、最後にjspページのコードを添付します.
-----------------------JS ------------------------
//Excel
function importEmp(){
// Excel
var excelPath = document.getElementById("excelPath").value;
if(excelPath == null || excelPath == ''){
alert(" Excel ");
return;
}else{
var fileExtend = excelPath.substring(excelPath.lastIndexOf('.')).toLowerCase();
if(fileExtend == '.xls'){
}else{
alert(" '.xls' ");
return;
}
}
//
document.getElementById("empForm").action="/EmpExcel.action.EmpExcelAction.do?method=importEmployeeInfos";
document.getElementById("empForm").submit();
}
ここまでがExcelファイルをインポートするすべてのコードです.3.Excelファイルとしてエクスポート:
/**
* POI : , Excel
* @param os (action: OutputStream os = response.getOutputStream();)
* @param employeeInfos
*/
public static void exportEmployeeByPoi(OutputStream os, List employeeInfos) {
try {
// Excel
HSSFWorkbook book = new HSSFWorkbook();
// Excel
HSSFSheet sheet = book.createSheet(" ");
// ( )
//HSSFCellStyle cellStyle = book.createCellStyle();
//
HSSFRow row = sheet.createRow(0);//
HSSFCell cell0 = row.createCell(0);
HSSFCell cell1 = row.createCell(1);
HSSFCell cell2 = row.createCell(2);
HSSFCell cell3 = row.createCell(3);
HSSFCell cell4 = row.createCell(4);
//
cell0.setCellType(HSSFCell.CELL_TYPE_STRING);
cell1.setCellType(HSSFCell.CELL_TYPE_STRING);
cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
cell3.setCellType(HSSFCell.CELL_TYPE_STRING);
cell4.setCellType(HSSFCell.CELL_TYPE_STRING);
//
cell0.setCellValue(" ");
cell1.setCellValue(" ");
cell2.setCellValue(" ");
cell3.setCellValue(" ");
cell4.setCellValue(" ");
// excel
for(int i = 0; i < employeeInfos.size(); i++) {
EmployeeInfo employeeInfo = employeeInfos.get(i);
// i
HSSFRow rowi = sheet.createRow(i + 1);
// i
rowi.createCell(0).setCellValue(employeeInfo.getEmployeeNumber());
rowi.createCell(1).setCellValue(employeeInfo.getFullName());
// (M: F: )
String sex = null;
if("M".equals(employeeInfo.getSex())) {
sex = " ";
}else {
sex = " ";
}
rowi.createCell(2).setCellValue(sex);
//
if(employeeInfo.getDateOfBirth() != null && !"".equals(employeeInfo.getDateOfBirth())){
java.text.DateFormat format1 = new SimpleDateFormat("yyyy-MM-dd");
rowi.createCell(3).setCellValue(format1.format(employeeInfo.getDateOfBirth()));
}
rowi.createCell(4).setCellValue(employeeInfo.getNationalIdentifier());
}
// Excel
book.write(os);
} catch (IOException e) {
e.printStackTrace();
}
}
Actionコードとインポートの類似点はここでは後述しない.以上、自分で書いたPOIインポートでExcelをエクスポートするすべてのコードです.