Java導入導出Excel工具類ExcelUtil


導出就是將List轉化為Excel(listToExcel)

導入就是將Excel轉化為List(excelToList)

導入導出中會出現各種各樣的問題,比如:數據源為空、有重復行等,我自定義了一個ExcelException異常類,用來處理這些問題。

 

異常類

 

導出工具類:

 

public Map<String,Object>  exportMessageExcelFile(String title, String[] headers,List dossierList, OutputStream out, String pattern)
       {
           boolean flag = true;
           Map<String,Object> map = new HashMap<String,Object>();
           StringBuffer messageFile = new StringBuffer(); 
           // 聲明一個工作薄
              HSSFWorkbook workbook = new HSSFWorkbook();
              // 生成一個表格
              HSSFSheet sheet = workbook.createSheet(title);
              // 設置表格默認列寬度為15個字節
              sheet.setDefaultColumnWidth((short) 15);
              // 生成一個樣式
              HSSFCellStyle style = workbook.createCellStyle();
              style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
              style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
              style.setBorderRight(HSSFCellStyle.BORDER_THIN);
              style.setBorderTop(HSSFCellStyle.BORDER_THIN);
              style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
              //產生表格標題行
              HSSFRow row = sheet.createRow(0);
              for (short i = 0; i < headers.length; i++) {
                 HSSFCell cell = row.createCell(i);
                 cell.setCellStyle(style);
                 HSSFRichTextString text = new HSSFRichTextString(headers[i]);
                 cell.setCellValue(text);
              }
              for(int i = 0; i< dossierList.size();i++)
              {
                  Object[] obj =  (Object[]) dossierList.get(i);
                  row = sheet.createRow(i+1);
                  for (int j = 0; j < obj.length; j++) {
                      HSSFCell cell = row.createCell(j);
                      cell.setCellStyle(style);
                      if(j==0)
                      {
                          cell.setCellValue(i+1);//序號
                      }
                      if(j==1)
                      {
                          //Logger.debug("obj[5]"+obj[5]);
                          cell.setCellValue(obj[5]==null?"":obj[5].toString());//辦理人
                      }
                      if(j==2)
                      {
                          //Logger.debug("obj[3]"+obj[3]);
                          cell.setCellValue(obj[3]==null?"":obj[3].toString());//辦理時間
                      }
                      if(j==3)
                      {
                         // Logger.debug("obj[2]"+obj[2]);
                          cell.setCellValue(obj[2]==null?obj[6]==null?"":obj[6].toString():obj[2].toString());//辦理意見
                          if(null!=obj[6]&&!"".equals(obj[6]))
                          {
                              messageFile.append(obj[6].toString()+",");
                          }
                          break;
                      }
                  }
              }
              map.put("messageFile", messageFile.toString().endsWith(",")?messageFile.toString().substring(0, messageFile.toString().length()-1):messageFile.toString());
              try {
                workbook.write(out);
            } catch (IOException e) {
                e.printStackTrace();
                flag = false;
            }finally {
                //清理資源
                try {
                    if(out != null)
                    {
                        out.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
              map.put("flag", flag);
              return map;
       }

 

 測試類:

 public static void main(String[] args) {
           ExportExcel<Object> ex = new ExportExcel<Object>();
           String[] headers = { "學號"};
           List<Object[]>  dataset = new ArrayList<Object[]>();
           dataset.add(new Object[]{"1"});
           dataset.add(new Object[]{"2"});
           dataset.add(new Object[]{"3"});
           dataset.add(new Object[]{"4"});
           dataset.add(new Object[]{"5"});
           try {
            OutputStream out = new FileOutputStream("C://Users//Lenovo//Desktop/aa.xls");
             ex.exportMessageExcelFile("測試POI導出EXCEL文檔", headers, dataset, out, "yyyy-MM-dd");
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM