1. 程式人生 > >poi匯入excel 根據檔名區分07(.xlsx)和03 (.xls)兩種情況進行解析

poi匯入excel 根據檔名區分07(.xlsx)和03 (.xls)兩種情況進行解析

@RequestMapping(value = "/importMapping", method = RequestMethod.POST)
@ResponseBody
public void importPos(
        @RequestParam(value = "file", required = false) CommonsMultipartFile file,
HttpServletRequest req, String mappingType, String siteType, String customerId, HttpServletResponse response) throws 
Exception { Map<String, Object> map = new HashMap<String, Object>(); String errorMsg = "ok"; List<com.winner.model.ExcelErrorVo> errors = new ArrayList<com.winner.model.ExcelErrorVo>(); // 上傳檔案 獲得檔名(全路徑) String fileName = file.getOriginalFilename(); if (file.isEmpty()) { map.put("errorMsg"
, "emptyFile"); JSONObject jo = JSONObject.fromObject(map); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); response.getWriter().write(jo.toString()); return; } String path = req.getSession().getServletContext().getRealPath("upload"); File targetFile = new File(path,
fileName); if (!targetFile.exists()) { targetFile.mkdirs(); } try { file.transferTo(targetFile); } catch (Exception e) { e.printStackTrace(); } String filePath = path + File.separator + fileName; ArrayList<HashMap<String, Object>> list = new ArrayList<>(); // 07+版本excel上傳 if (filePath.indexOf(".xlsx") != -1) { InputStream is = new FileInputStream(filePath); XSSFWorkbook workbook = new XSSFWorkbook(is); int sheetNum = workbook.getNumberOfSheets(); for (int i = 0; i < sheetNum; i++) {//外迴圈遍歷sheetXSSFSheet sheet = workbook.getSheetAt(i); for (int rowNum = 1; rowNum < sheet.getLastRowNum() + 1; rowNum++) { XSSFRow row = sheet.getRow(rowNum); HashMap<String, Object> hashMap = new HashMap<>(); hashMap.put("innerName", row.getCell(0).toString());//mappingType2 hashMap.put("innerId", AesUtil.decrypt(row.getCell(1).toString(), customerId)); String outName = row.getCell(2).toString(); String outId = row.getCell(3).toString(); int dotNum = outName.indexOf(".");//確保為整型 if(dotNum>-1){ outName = outName.substring(0,dotNum); } dotNum = outId.indexOf(".");//確保為整型 if(dotNum>-1){ outId = outId.substring(0,dotNum); } hashMap.put("outName", outName); hashMap.put("outId", outId); hashMap.put("mappingType", mappingType); hashMap.put("siteType", siteType); list.add(hashMap); } } }else if(filePath.indexOf(".xls")!=-1) { InputStream is = new FileInputStream(filePath); HSSFWorkbook workbook = new HSSFWorkbook(is);//new的物件不一樣一個是HSSFWorkbook HSSFSheet HSSFRow 07是一個是XSSFWorkbook XSSFSheet XSSFRow int sheetNum = workbook.getNumberOfSheets(); for (int i = 0; i < sheetNum; i++) { HSSFSheet sheet = workbook.getSheetAt(i); String sheetName = workbook.getSheetName(i); if (!"readme_cn".equals(sheetName)) { for (int rowNum = 1; rowNum < sheet.getLastRowNum() + 1; rowNum++) { HashMap<String, Object> hashMap = new HashMap<>(); HSSFRow row = sheet.getRow(rowNum); hashMap.put("innerName", row.getCell(0).toString());//mappingType2 hashMap.put("innerId", AesUtil.decrypt(row.getCell(1).toString(), customerId)); String outName = row.getCell(2).toString(); String outId = row.getCell(3).toString(); int dotNum = outName.indexOf(".");//確保為整型 if(dotNum>-1){ outName = outName.substring(0,dotNum); } dotNum = outId.indexOf(".");//確保為整型 if(dotNum>-1){ outId = outId.substring(0,dotNum); } hashMap.put("outName", outName); hashMap.put("outId", outId); hashMap.put("mappingType", mappingType); hashMap.put("siteType", siteType); list.add(hashMap); } } } String url = "huike_importMapping"; JSONObject jsonParam = new JSONObject(); jsonParam.put("list", JSON.toJSONString(list)); jsonParam.put("mappingType", mappingType); jsonParam.put("siteType", siteType); jsonParam.put("customerId", customerId); JSONObject result = HttpClient.httpJsonPost(MessageManager.getMsg("apiAddress") + url, jsonParam, false); String statu = result.get("respCode").toString(); targetFile.delete(); if (statu != null && "90001".equals(statu)) { map.put("errorMsg", "ok"); map.put("count", list.size()); } else { map.put("errorMsg", "error"); } JSONObject jo = JSONObject.fromObject(map); response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); response.getWriter().write(jo.toString()); return; } }

相關推薦

poi匯入excel 根據檔名區分07(.xlsx)03 (.xls)情況進行解析

@RequestMapping(value = "/importMapping", method = RequestMethod.POST) @ResponseBody public void importPos( @RequestParam(value =

poi匯入excel,支援xlsxlsx格式

public static void checkFile(MultipartFile file) throws IOException{ //判斷檔案是否存在 if(null == file){ throw new AudaqueException("檔案不存在!");

POI匯入Excel含.xls.xlsx

之前用的jxl,但是遇到07版以上的.xlsx字尾的檔案,目前jxl我無法解決. 就用POI做了個簡單的匯入Excel表,含.xls和.xlsx字尾的匯入. POI中這兩種字尾的檔案,是使用2個物件來操作的. 先寫思路,後附上程式碼. POI跟JXL有所不一樣. POI

poi匯入Excel,相容03/07版本

由於系統需要提供給使用者匯入Excel檔案資料的功能,但Excel檔案有97-2003和2007+兩種格式,且要求給使用者有較大的靈活性。匯入Excel檔案的處理無非就是讀取Excel檔案的內容,然後根據一定的業務規則進行校驗,校驗正確後處理寫入系統。對Excel檔案的讀取可通過JXL或POI兩個Jar來完

解決Java POI 匯出Excel檔名中文亂碼,相容瀏覽器

     String agent = request.getHeader("USER-AGENT").toLowerCase();   response.setContentType("application/vnd.ms-excel");&

Java-poi匯入excel合併單元格

要匯入的excel示例 一、Action @Action("/import-excel") public void toimport() { String root = ServletActionContext.getSer

java實現簡單的poi匯入excel

示例程式碼 public void poiTest(){ File file = new File("xxx\\test.xlsx") ; InputStream input = new FileInputStream(file) ; String fileName =

關於POI匯入Excel表時報:java.lang.IllegalStateException: Cannot get a text value from a numeric cell

1. 問題描述:    POI技術來實現Excel表格資料匯入到系統中的時候 ,單元格中的資料型別不是String型別的時候,執行row.getCell(0).getStringCellValue()然後再進行實體屬性的set方法時,會報:Cannot get a text

友好解決POI匯入Excel檔案行是不是為空

   繼 解決POI讀取Excel如何判斷行是不是為空 後發現了一個問題。這個是一個銀行的需求,有20萬個客戶的資料要匯入系統,但有的資料是有問題的(不能正常匯入),但也有能正常匯入的。現在的問題是怎麼知道那些資料匯入了,那些沒有匯入呢?    全部能正常匯入: 全部失敗: 下面來看一下

java poi匯入Excel通用工具類

問題引入和分析 提示:如果不想看羅嗦的文章,可以直接到最後點選原始碼下載執行即可 最近在做一個匯入Excel的功能,在做之前在百度上面查詢“java通用匯入Excel工具類”,沒有查到,大多數都是java通用匯出Excel。後來仔細想想,匯出可

java poi 匯入excel時 讀取單元格內容的方法 ,其中包含excel中有函式的讀法

public static String getExcelCellValue(Cell cell) { String ret = ""; try { if (cell == null) { ret = ""; } else if (cell.get

java運用poi匯入excel並存入資料庫(內含自己用的選擇路徑方法)

/*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templa

Java 使用 Poi 匯入 Excel 通用(一)

上一篇【Java實現從網頁上傳匯入excel資料到資料庫】一文中利用poi 匯入excel工具只是一個簡版,今天利用反射機制重新寫一個通用excel匯入工具類,可供大家參考使用 實現思路:        利用java反射機制把excel讀取出來的值

使用POI匯入EXCEL報java.lang.IncompatibleClassChangeError

使用POI匯入xls格式的excel報java.lang.IncompatibleClassChangeError異常,而匯入xlsx正常。 oracle.apps.fnd.framework.OAException: Application: FND, Message

maven+springmvc+POI匯入Excel

說明 POI可以對2003-和2007+版本的Excel檔案做匯入匯出操作,本章只簡單介紹對Excel檔案的匯入操作。        Excel檔案的上傳處理處理請求,依然使用SpringMvc中的MultipartRequest方式處理。        前端J

使用POI匯入Excel資料到資料庫

  從Excelpublic class ReadExcel      思路: 1:把Excel導成List<Map<String, String>>的格式; 2:把List<Map<String, String>>中的Map轉成具體

通用的POI匯入Excel解決方案

(2)<repeatImport/>表示需要迴圈匯入的資料,欄位field與單元格cellRef的對映關係寫在CDATA區中。<endCode/>表示迴圈終止的字元。 下面說一下,根據這個XML描述檔案,我們需要從Excel中解析出什麼樣的資料格式來: /** * 讀取匯入的

springBoot整合POI匯入Excel

        //獲取一共有多少sheet,遍歷int numberOfSheets = book.getNumberOfSheets();        for (int i=0; i<numberOfSheets; i++) {            Sheet sheet = book.getS

java POI匯入Excel

在專案中要匯入天氣資料,Excel中內容如下:(資料隨便寫的) 谷歌瀏覽器中 <input type="file"/> 樣式不好看,因此改了下樣式,在點選文字框和點選瀏覽按鈕時都會彈出選擇檔案提示框。 部分樣式: .file-box{ position:relative;w

POI處理excel日期格式問題(xlsx

package com.wonders.task.excel.util; import com.wonders.task.excel.model.SendBo; import org.apache.poi.xssf.usermodel.XSSFCell; import o