1、讀取文件
/**
* 導入方法
* @param request
* @return
* @throws Exception
*/
public Message importCubage(HttpServletRequest request) throws Exception {
Message message = MessageFactory.getMessage();
ServletContext context = getServletContext();
UploadListener listener = new UploadListener(request, 30);
// Create a factory for disk-based file items
FileItemFactory factory = new MonitoredDiskFileItemFactory(listener);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
UserSession userSession = UserSession.getUserSession(request
.getSession());
for (int i = 0; i < items.size(); i++) {
FileItem fileItem = (FileItem) items.get(i);
if (!fileItem.isFormField()) {
InputStream inputstream = fileItem.getInputStream();
//讀取excle文件
this.getVolumeCorrenctionFactorService().saveExcleWorkBook(inputstream, userSession);
message.addMessage(MessageUtils.operateSuccess());
}
}
return message;
} catch (FileUploadException e) {
throw new FileUploadException(e.getMessage());
}
}
2、讀取ExcleWorkBook
/**
* 讀取Excle
* @param is
*/
public void saveExcleWorkBook(InputStream is, UserSession userSession){
Message message = MessageFactory.getMessage();
//通過得到的文件輸入流inputstream創建一個HSSFWordbook對象
try {
HSSFWorkbook hssfworkbook = new HSSFWorkbook(is);
HSSFSheet hssfsheet = null;
for (int i = 0; i < hssfworkbook.getNumberOfSheets(); i++) {
hssfsheet = hssfworkbook.getSheetAt(i);
this.readExcleSheet(hssfsheet, userSession);
}
} catch (IOException e) {
e.printStackTrace();
message.addMessage("讀取Excle文件失敗!");
}
}
3、解析Excle
/**
* 讀取Sheet數據
* @param hssfsheet
*/
private void readExcleSheet(HSSFSheet hssfsheet, UserSession userSession){
//定義Sheet行
HSSFRow rows = null;
//定義列
HSSFCell cell = null;
Double firstColumn;
Double firstRow;
List list = new ArrayList();
VolumeCorrenctionFactorVO vo = null;

//遍歷該行所有的行,i表示行數 getPhysicalNumberOfRows行的總數
for (int i = 1; i < hssfsheet.getPhysicalNumberOfRows(); i++) {
rows = hssfsheet.getRow(i);

//獲取第i行,第0列的值
if(rows.getCell((short) 0).getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
firstColumn = rows.getCell((short) 0).getNumericCellValue();
}else{
throw new BusinessException("Excle第" + (i+1) + "行,第" + "1列不是有效數字");
}
//獲取第i行,第j列的值
for(short j = 1; j < hssfsheet.getRow(0).getLastCellNum(); j++ )
{
//獲取第0行,第j列的值
if(hssfsheet.getRow(0).getCell(j).getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
firstRow = hssfsheet.getRow(0).getCell(j).getNumericCellValue();
}else{
throw new BusinessException("Excle第1行,第" + (j + 1) + "列不是有效數字");
}
//獲取第i行,第j個單元格
cell = rows.getCell(j);
//判斷是否是數字
if (null == cell || cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC)
{
vo = new VolumeCorrenctionFactorVO();
vo.setDensity(firstRow);
vo.setTemprature(firstColumn);
if(null != cell){
Double cellContent = cell.getNumericCellValue();
vo.setVolumeFactor(cellContent);
}
list.add(vo);
}else{
throw new BusinessException("Excle第" + (i + 1) + "行,第" + (j + 1) + "列不是有效數字");
}
}
}
if(list.size() > 0)
{
//構建批量插入SQL
String sql = this.buildSQL(list,userSession);
//執行一次性插入多條SQL語句
this.volumeCorrenctionFactorDAO.getSqlExecutor().exectue(sql, null);
}
}



































2、讀取ExcleWorkBook




















3、解析Excle









































































