<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      java-POI處理excel文件方法

      處理excel文件的開源庫有很多,常見的POI、jxls。。。。。

      重點分析下POI處理excel的方法:

      1、寫文件

       

      // 按照行優先進行數據表格的初始化
       public static void createRows() throws IOException {
      
              Workbook wb = new HSSFWorkbook();
              // 創建表格
              Sheet sheet = wb.createSheet("測試Sheet_01");
              List<String> list = new ArrayList<String>();
              list.add("a");
              list.add("b");
              int rowCount = list.size(); // 根據數據集設置行數
              for (int i = 0; i < rowCount; i++) {
                  Row row = sheet.createRow(i);// 創建行,表頭是第0行
                  for (int j = 0; j < list.size(); j++) {
                      // 為第一個單元格賦值
                      Cell cell = row.createCell(0);
                      cell.setCellValue("測試數據");
                      // 為第二個單元格賦值
                      Cell cell_1 = row.createCell(1);
                      cell_1.setCellValue("test");
      
                  }
      
              }
      
              FileOutputStream fos = new FileOutputStream("/Users/file/測試的Excel.xls");
              wb.write(fos);
              if (null != fos) {
                  fos.close();
              }
              System.out.println("測試數據完成輸出。。");
          }

       

      2、讀文件

      // 將文件內容轉換為二維數組
          @SuppressWarnings("resource")
          private static String[][] getData(FileItem fileItem, int ignoreRows)
      
          throws FileNotFoundException, IOException {
      
              List<String[]> result = new ArrayList<String[]>();
              int rowSize = 0;
              BufferedInputStream in = new BufferedInputStream(fileItem.getInputStream());
      
              Workbook wb;
              if (fileItem.getName().indexOf(".xlsx") > -1) {
                  wb = new XSSFWorkbook(in);
              } else {
                  wb = new HSSFWorkbook(in);
              }
              Cell cell = null;
              for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {
      
                  Sheet st = wb.getSheetAt(sheetIndex);
                  // 第一行為標題,不取
                  for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {
                      Row row = st.getRow(rowIndex);
                      if (row == null) {
                          continue;
                      }
      
                      int tempRowSize = row.getLastCellNum() + 1;
                      if (tempRowSize > rowSize) {
                          rowSize = tempRowSize;
                      }
      
                      String[] values = new String[rowSize];
                      Arrays.fill(values, "");
                      boolean hasValue = false;
                      for (int columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {
      
                          String value = "";
                          cell = row.getCell(columnIndex);
                          if (cell != null) {
                             //按照單元格數據類型進行數據處理
                              switch (cell.getCellType()) {
                                  case HSSFCell.CELL_TYPE_STRING:
                                      value = cell.getStringCellValue();
                                      break;
                                  case HSSFCell.CELL_TYPE_NUMERIC:
                                      if (HSSFDateUtil.isCellDateFormatted(cell)) {
                                          Date date = cell.getDateCellValue();
                                          if (date != null) {
                                              value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
                                          } else {
                                              value = "";
                                          }
      
                                      } else {
                                          value = new DecimalFormat("0").format(cell.getNumericCellValue());
      
                                      }
                                      break;
                                  case HSSFCell.CELL_TYPE_FORMULA:
                                      // 導入時如果為公式生成的數據則無值
                                      if (!cell.getStringCellValue().equals("")) {
                                          value = cell.getStringCellValue();
                                      } else {
                                          value = cell.getNumericCellValue() + "";
                                      }
                                      break;
                                  case HSSFCell.CELL_TYPE_BLANK:
                                      break;
                                  case HSSFCell.CELL_TYPE_ERROR:
                                      value = "";
                                      break;
                                  case HSSFCell.CELL_TYPE_BOOLEAN:
                                      value = (cell.getBooleanCellValue() == true ? "Y" : "N");
                                      break;
                                  default:
                                      value = "";
                              }
      
                          }
      
                          if (columnIndex == 0 && value.trim().equals("")) {
                              break;
                          }
      
                          values[columnIndex] = rightTrim(value);
                          hasValue = true;
                      }
      
                      if (hasValue) {
                          result.add(values);
                      }
      
                  }
      
              }
      
              in.close();
              String[][] returnArray = new String[result.size()][rowSize];
              for (int i = 0; i < returnArray.length; i++) {
                  returnArray[i] = (String[]) result.get(i);
              }
              return returnArray;
          }
                  

      上述文件處理的過程能夠判斷單元格的數據類型,判斷邏輯較為繁瑣,如果是自行定義模板文件可以直接將文件模板中的單元格數據類型全部處理成文本類型;

      這樣后臺程序全部按照字符串數據類型處理即可,相對容易,而且不易出錯。

      3、容易出現的錯誤

       

      對office2003和office2007的處理異常,異常如下

      org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

      解決方法是按照上面的

      fileItem.getName().indexOf(".xlsx")文件后綴的判斷邏輯進行分類處理即可。

       

      posted @ 2015-05-05 15:47  xiayangy  閱讀(388)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久这里精品国产99丫E6| 久久精品av国产一区二区| 国产激情av一区二区三区| 久久毛片少妇高潮| 人人妻人人澡人人爽| 国产精品女在线观看| 日夜啪啪一区二区三区| 久久精品国产最新地址| CAOPORN免费视频国产| 国产成人精品aa毛片| 人妻在线无码一区二区三区| 亚洲高清WWW色好看美女| 亚洲中文字幕五月五月婷| 国产国拍精品av在线观看| 亚洲精品不卡av在线播放| 十八禁日本一区二区三区| 亚洲欧美中文日韩在线v日本| 欧美熟妇xxxxx欧美老妇不卡 | 蜜臀av午夜精品福利| 国产成人无码专区| 国产精品综合色区在线观| 国产超碰无码最新上传| 久久本道综合久久伊人| 亚洲av色夜色精品一区| 116美女极品a级毛片| 成年女人免费碰碰视频| 一区二区亚洲人妻精品| 国产高清精品在线91| 亚洲中文字幕日产无码成人片| 日韩欧美aⅴ综合网站发布| 免费全部高h视频无码| 亚洲av免费成人精品区| 国产精品一区二区三区黄| 动漫AV纯肉无码AV电影网| 亚洲欧洲美洲无码精品va| 免费视频一区二区三区亚洲激情| 国产精一品亚洲二区在线播放| 吉川爱美一区二区三区视频| 老熟妇国产一区二区三区| 成在人线av无码免费高潮水老板| 亚洲av午夜福利精品一区二区|