首页 javaWEB springmvc_java导入excel的学习方法

springmvc_java导入excel的学习方法

springmvc_java导入excel的学习方法 网上一大堆,这里只是介绍可以用的方法, 导入excel的方法关键是…

springmvc_java导入excel的学习方法

网上一大堆,这里只是介绍可以用的方法,

导入excel的方法关键是springmvc的文件上传有点需要注意

springmvc的读取file

 

MultipartFile file  =  multipartRequest.getFile("file");

是需要用这个 MultipartFile

file 是取不到 的

 

springmvc_java导入excel的学习方法

代码如下

  /**
   * excel批量导入客户
 * @author: lyq
 * @date: Jun 6, 2014 10:52:21 AM
 * @param file
 * @param model
 * @return
 */
  @RequestMapping(value = "addCrmManagerByExcel.php")
public ModelAndView  addCrmManagerByExcel(ModelMap model,HttpServletRequest request){
        MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request;
        MultipartFile file  =  multipartRequest.getFile("file");
        try{
        this.SaveFileFromInputStream(file.getInputStream(), request.getRealPath("/upload"), "java.xls");
        }catch(Exception ex){
            System.out.println("上传文件失败");
            ex.printStackTrace();

        }
        File file1 = new File(request.getRealPath("/upload")+"/java.xls");
        String[][] result=null;
        try {
            result = getData(file1, 1);
        } catch (FileNotFoundException e) {

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

            e.printStackTrace();
        }
        if(result==null){
            return null;
        }
       int rowLength = result.length;
       //默认从1 开始    本来是为0 剔除掉
      Date  date= new Date();
       for(int i=0;i<rowLength;i++) {
            CrmManager crm =new  CrmManager();
            crm.setCrmCreatetime(date);
            crm.setCrmStatus(1);
           for(int j=1;j<result[i].length;j++) {//默认从1开始添加
          //客户ID        客户名     客户类型        客户电话        客户状态        创建时间        放出时间        跟入时间        跟入人     放出人
          //27            法规和热       特级     1212121     1           41773       2014-05-14 10:20:48.0       yq1012
          //整理   id 去掉 。 创建时间 换成当前时间,,,放出时间     跟入时间        跟入人     放出人----全不要
          //格式如上
          // System.out.print(result[i][j]+"\t\t");

                if(j==1){//客户名字
                    crm.setCrmName(result[i][j]);

                }
                if(j==2){//客户类型
                    crm.setCrmType(result[i][j]);

                }
                if(j==3){//客户电话
                    crm.setCrmPhone(result[i][j]);
                }

            }
           crmService.saveCrmUser(crm);

       }


       return ajaxDoneFile(200, "上传成功", null);


  }

 

//将MultipartFile 转换为File
public static void SaveFileFromInputStream(InputStream stream,String path,String savefile) throws IOException
        {
            FileOutputStream fs=new FileOutputStream( path + "/"+ savefile);
        //  System.out.println("------------"+path + "/"+ savefile);
            byte[] buffer =new byte[1024*1024];
            int bytesum = 0;
            int byteread = 0;
            while ((byteread=stream.read(buffer))!=-1)
            {
               bytesum+=byteread;
               fs.write(buffer,0,byteread);
               fs.flush();
            }
            fs.close();
            stream.close();
        }

/**

 * 读取Excel的内容,第一维数组存储的是一行中格列的值,二维数组存储的是多少个行

 * @param file 读取数据的源Excel

 * @param ignoreRows 读取数据忽略的行数,比喻行头不需要读入 忽略的行数为1

 * @return 读出的Excel中数据的内容

 * @throws FileNotFoundException

 * @throws IOException

 */

public static String[][] getData(File file, int ignoreRows)

       throws FileNotFoundException, IOException {

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

   int rowSize = 0;

   BufferedInputStream in = new BufferedInputStream(new FileInputStream(

          file));

   // 打开HSSFWorkbook

   POIFSFileSystem fs = new POIFSFileSystem(in);

   HSSFWorkbook wb = new HSSFWorkbook(fs);

   HSSFCell cell = null;

   for (int sheetIndex = 0; sheetIndex < wb.getNumberOfSheets(); sheetIndex++) {

       HSSFSheet st = wb.getSheetAt(sheetIndex);

       // 第一行为标题,不取

       for (int rowIndex = ignoreRows; rowIndex <= st.getLastRowNum(); rowIndex++) {

          HSSFRow 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 (short columnIndex = 0; columnIndex <= row.getLastCellNum(); columnIndex++) {

              String value = "";

              cell = row.getCell(columnIndex);

              if (cell != null) {

                 // 注意:一定要设成这个,否则可能会出现乱码

                 cell.setEncoding(HSSFCell.ENCODING_UTF_16);

                 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")

                                   .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;

}
/**

     * 去掉字符串右边的空格

     * @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);

    }

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

nodejs 整理记录

nodejs 整理记录

下载包 https://blog.csdn.net/m0_59878114/article/details/120274...
websocket测试html

websocket测试html

<!DOCTYPE html> <html> <head> <meta cha...
bigdemical两个数比较大小

bigdemical两个数比较大小

/*int result = bigdemical1.compareTo(bigdemical2) result = -...
Beetl2.7 中文文档

Beetl2.7 中文文档

Beetl目前版本是2.7.23,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等...
纯CSS实现多个便签在一行展示,拖动滚动

纯CSS实现多个便签在一行展示,拖动滚动

div <h2>请注意需要在移动端预览,PC端拖拽无效果</h2> <div class=...
返回顶部