关闭

java导入/导出Excel

155人阅读 评论(0) 收藏 举报
分类:
public void export(HttpServletRequest request , HttpServletResponse response)
    {
String tableName = request.getParameter("tableName");
String formatTime = request.getParameter("formatTime") +"%";
Map<String,Object> map = new HashMap<String, Object>();
map.put("table", tableName);
map.put("formatTime", formatTime);
records = recoredAO.queryRecords(map); //查询所有数据
               String header[] = {"name","number"};

HSSFSheet hssfSheet = workbook.createSheet();
hssfSheet.setColumnWidth(0, 10*200);
hssfSheet.setColumnWidth(1, 15*200);

HSSFRow hssfRow = hssfSheet.createRow(0);

for (int i = 0; i < header.length; i++)
{
HSSFCell hssfCell = hssfRow.createCell(i);
hssfCell.setCellType(HSSFCell.CELL_TYPE_STRING); //设置列类型
hssfCell.setCellValue(header[i]);//设置表头名称
}
HSSFRow hssfRow1;

for (int i = 0 ; i < records.size() ; i++)
{
hssfRow1 = hssfSheet.createRow(i+1);

Record record = records.get(i);

if(ObjectUtils.notNull(record))
{
hssfRow1.createCell(0).setCellValue(record.getId());
hssfRow1.createCell(1).setCellValue(record.getAccessTime());
}

}

   try
   {
request.setCharacterEncoding("UTF-8");
response.reset();
response.setCharacterEncoding("UTF-8");
response.setContentType("application/msexcel;charset=UTF-8"); 
response.addHeader("Content-Disposition", "attachment;filename=\""+formatTime.replace("%", " ") 
+ new String(("统计表.xls").getBytes("GBK"),  
"ISO8859_1") + "\"");

OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.flush();
outputStream.close();

  }
  catch (IOException e)
  {
e.printStackTrace();
  }
}

    }

//读取数据

 public static String[][] getData() throws FileNotFoundException, IOException {


      List<String[]> result = new ArrayList<String[]>();


      int rowSize = 2; //行的大小,即每行有多少列


      BufferedInputStream in = new BufferedInputStream(new FileInputStream("D:\\手机版代注册表2.xlsx"));
      // 打开HSSFWorkbook
      XSSFWorkbook wb = new XSSFWorkbook(in);
      XSSFCell cell = null;


      for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) 
      {
          XSSFSheet st = wb.getSheetAt(sheetIndex);
          // 第一行为标题,不取
          for (int rowIndex = 40764; rowIndex <= st.getLastRowNum(); rowIndex++) 
          {
             XSSFRow row = st.getRow(rowIndex);


             if (row == null) { continue;}


             String[] values = new String[rowSize]; //两列 name number


             Arrays.fill(values, "");


             for (int columnIndex = 0; columnIndex < rowSize; 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 = (Date) cell.getDateCellValue();


                           if (date != null) {


                               value = new SimpleDateFormat("yyyy-MM-dd") .format(date);


                           } else {


                               value = "";


                           }
                        } else {


                           value = new DecimalFormat("0").format(cell .getNumericCellValue());
                        }


                        break;


                    case HSSFCell.CELL_TYPE_BLANK:


                        break;


                   
                    default:value = ""; }


                 }


                 if (columnIndex == 1 && value.trim().equals("")) {


                    break;


                 }


                 values[columnIndex] = rightTrim(value);


             }
                  result.add(values);


          }


      }


      in.close();


      String[][] returnArray = new String[result.size()][rowSize];//n行2列


      for (int i = 0; i < returnArray.length; i++) {


          returnArray[i] = (String[]) result.get(i);


      }


      return returnArray;


   }


  


   /**


    * 去掉字符串右边的空格


    * @param str 要处理的字符串


    * @return 处理后的字符串


    */


    public static String rightTrim(String str) {


      if (str == null) {


          return "";


      }


      int length = str.length();


      for (int i = length - 1; i >= 0; i--) {


          if (str.charAt(i) != 0x20) {


             break;


          }


          length--;


      }


      return str.substring(0, length);


   }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:17059次
    • 积分:347
    • 等级:
    • 排名:千里之外
    • 原创:16篇
    • 转载:16篇
    • 译文:0篇
    • 评论:0条
    文章分类