zoukankan      html  css  js  c++  java
  • Excel导入保存附件和解析数据

    Excel导入保存附件和解析数据

    一,前端上传附件的组件

    1、先给一个下载模板的按钮

          // 下载Excel模板
            downLoadExcel: function () {
                window.open(GLOBAL_CONFIG.webSiteRoot + "/main/common/files/xxx.xls");
            },

    2、Element上传控件

                  <el-upload ref="upload"
                                       :action="importFileUrl"
                                       :before-upload="beforeUpload"
                                       :multiple="false"
                                       :on-success="uploadSuccess"
                                       :on-error="uploadFail"
                                       :show-file-list="false"
                                       style="display: inline-block;">
                                <el-button type="primary" icon="el-icon-plus" size="medium">导入Excel</el-button>
                            </el-upload>

     3、js中上传有关

    var vue = new Vue({
        el: '#app',
        data: {
            // 导入的后台接口地址
            importFileUrl : '/excellImport/importFile',
    
    
    methods:{
    // 上传前对文件的类型和大小判断
            beforeUpload : function (file) {
              var self = this;
              const extension = file.name.split('.')[1] === 'xls'
              const extension2 = file.name.split('.')[1] === 'xlsx'
              const isLt2M = file.size / 1024 / 1024 < 50
              if (!extension && !extension2 ) {
                alert('上传文件只能是 xls、xlsx 格式!')
              }
              if (!isLt2M) {
                alert('上传文件大小不能超过 50MB!')
              }
              console.log(file);
              return extension || extension2  && isLt2M
            },
    // 文件上传成功
            uploadSuccess: function (response, file, flieList) {
                this.initTable();
                console.log(response);
                alert(response.msg);
            },
    // 文件上传失败
            uploadFail: function (err, file, fileList) {
                alert('上传失败,请重试!');
            },
    
    }

    其中,data 中的 importFileUrl : '/excellImport/importFile', 就是后台的接口地址;

    二、java代码

    @SuppressWarnings({"unchecked", "finally" })
        @ResponseBody
        @RequestMapping(value="/importFile",method= RequestMethod.POST)
        @ApiOperation("导入excel文件操作接口")
        public JsonResult<XfImportexcelModel> importFile(HttpServletRequest request, HttpServletResponse response, 
                @RequestParam("file") MultipartFile[] excelFile, XfUser user) throws AccessExpiredException, DaoAccessException, Exception {
            System.out.println("==========================================-进入导入excel文件操作接口==========================");
            JsonResult<XfImportexcelModel> jsonResult = JsonResult.getDefaultResult();
            try {
                response.setCharacterEncoding("utf-8");
                // 手动调用PrintWriter向客户端输入返回值,若本方法是有返回值的,则不需要
    //            PrintWriter out = response.getWriter();
                
                //文件保存本地目录路径
                String savePath = request.getSession().getServletContext().getRealPath(PATH_LINE) + "main"+PATH_LINE+"xxx"+PATH_LINE+"xxx"+PATH_LINE+"xxx"+PATH_LINE+"upload";
                //文件保存目录URL
                String saveUrl = request.getContextPath() + PATH_LINE +"upload"+PATH_LINE+"file"+PATH_LINE;
                
                if(!ServletFileUpload.isMultipartContent(request)){
    //                out.print(getError("请选择文件。"));
    //                out.close();
                    jsonResult.setMsg("请选择文件。");
                    return jsonResult;
                }
                //检查目录
                File uploadDir = new File(savePath);
                if(!uploadDir.isDirectory()){ 
                    uploadDir.mkdirs(); //目录不存在就创建目录
                }
                //检查目录写权限
                if(!uploadDir.canWrite()){
    //                out.print(getError("上传目录没有写权限。"));
    //                out.close();
                    jsonResult.setMsg("上传目录没有写权限。");
                    return jsonResult;
                }
                
                String dirName = request.getParameter("dir");
                if (dirName == null) {
                    dirName = "file";
                }
                
                //定义允许上传的文件扩展名
                Map<String, String> extMap = new HashMap<String, String>();
                extMap.put("image", "gif,jpg,jpeg,png,bmp");
                extMap.put("flash", "swf,flv");
                extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
                extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,xml,txt,zip,rar,gz,bz2");
                
                if(!extMap.containsKey(dirName)){
    //                out.print(getError("目录名不正确。"));
    //                out.close();
                    jsonResult.setMsg("目录名不正确。");
                    return jsonResult;
                }
                //创建文件夹
                savePath += PATH_LINE+dirName + PATH_LINE;
                saveUrl += PATH_LINE;
                File saveDirFile = new File(savePath);
                if (!saveDirFile.exists()) {
                    saveDirFile.mkdirs(); //保存到项目工程文件夹指定目录中
                }
                
                SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
                String ymd = sdf.format(new Date());
                savePath += ymd + PATH_LINE;
                saveUrl += ymd + PATH_LINE;
                File dirFile = new File(savePath); //存到本地之后在获取解析
                if (!dirFile.exists()) {
                    dirFile.mkdirs();
                }
                
                //最大文件大小
                long maxSize = 10000000;
                
                // 保存文件
                for(MultipartFile iFile : excelFile){
                    String fileName = iFile.getOriginalFilename();
                    
                    //检查文件大小
                    if(iFile.getSize() > maxSize){
    //                    out.print(getError("上传文件大小超过限制。"));
    //                    out.close();
                        jsonResult.setMsg("上传文件大小超过限制。");
                        return jsonResult;
                    }
                    //检查扩展名
                    String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
                    if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
                        //return getError("上传文件扩展名是不允许的扩展名。
    只允许" + extMap.get(dirName) + "格式。");
    //                    out.print(getError("上传文件扩展名是不允许的扩展名。
    只允许" + extMap.get(dirName) + "格式。"));
    //                    out.close();
                        jsonResult.setMsg("上传文件扩展名是不允许的扩展名。
    只允许" + extMap.get(dirName) + "格式。");
                        return jsonResult;
                    }
                    
                    // 解析Excel数据存入数据库
                    JsonResult<Object> jsonResultHandle  = handleExcelData(iFile, user); //调用另外一个方法解析excel中的数据交互项目生产库
                    // 解析或者入库有问题则反馈到前端
                    if(!jsonResultHandle.getSuccess()){
                        // 返回导入信息到前端页面
                        jsonResult.setSuccess(false);
                        jsonResult.setMsg(jsonResultHandle.getMsg());
                        return jsonResult;
                    }
                    
                    // 返回导入信息到前端页面
                    jsonResult.setMsg(jsonResultHandle.getMsg());
                    
                    SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
                    String newFileName = df.format(new Date()) + "_" + iFile.getName() + "." + fileExt;
                    try{
                        File uploadedFile = new File(savePath, newFileName);
                        
                        // 写入文件
                        FileUtils.copyInputStreamToFile(iFile.getInputStream(), uploadedFile);
                    }catch(Exception e){
    //                    out.print(getError("上传文件失败。"));
    //                    out.close();
                        jsonResult.setMsg("上传文件失败。");
                        return jsonResult;
                    }
                    
                    JSONObject obj = new JSONObject();
                    obj.put("error", 0);
                    obj.put("url", saveUrl + newFileName);
                    
    //                out.print(obj.toJSONString());
    //                out.close();
                }
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                logger.error("", e);
                System.out.println(e);
                
            } finally {
                System.out.println("===========================================结束导入excel文件操作接口==");
                return jsonResult;
            }
            
        }
        
        
        /**
         *  解析Excel数据存入数据库
         *  @param file
         *  @param user
         *  @return    
         */
        @SuppressWarnings("unchecked")
        public JsonResult<Object> handleExcelData(MultipartFile file, XfUser user) throws Exception{
            System.out.println("==================================================开始解析Excel数据存入数据库==");
            // 返回导入的结果信息
            String resultString = "";
            JsonResult<Object> jsonResult = JsonResult.getDefaultResult();
            if (file != null) {
                try {
                    List<ImportexcelParam> ImportexcelParamList = null;
    
                    // 获取解析的excel数据
                    JsonResult<List<List<String>>> JsonResultList = ExcelUtil.parseExcel(file.getInputStream(),
                            file.getOriginalFilename());
                    // 解析有问题反馈到调用地方
                    if(!JsonResultList.getSuccess()){
                        jsonResult.setSuccess(false);
                        jsonResult.setMsg(JsonResultList.getMsg());
                        return jsonResult;
                    }
                    // excel数据解析成功,进行获取和入库处理
                    List<List<List<String>>> resultList = JsonResultList.getData();
                    
                    // 目前只检查第一个sheet
                    if (resultList != null && !resultList.isEmpty()) {
                        for (List<List<String>> sheetList : resultList) {
                            ImportexcelParamList = new ArrayList<>();
                            if (sheetList != null && !sheetList.isEmpty()) {
                                if (sheetList.size() > 200) {
                                    jsonResult.setSuccess(false);
                                    jsonResult.setMsg("单次上传文件记录条数不能超过200条!");
                                    return jsonResult;
                                }
                                if(sheetList.get(0).size() != 20){
                                    jsonResult.setSuccess(false);
                                    jsonResult.setMsg("请使用正确的导入模板!");
                                    return jsonResult;
                                }
                                // 导入开始时间,毫秒
                                long startTime = System.currentTimeMillis();
                                // 记录导入成功的数据条数
                                int successImportNum = 0;
                                // 重复的编号记录
                                String repeatInfo="";
                                for (List<String> rowList : sheetList){
                                    if (!rowList.isEmpty()) {
                                        // 投诉人和投诉内容筛选有效行
                                        if(StringUtils.isNullOrEmpty(rowList.get(13))||StringUtils.isNullOrEmpty(rowList.get(14))){
                                            continue;
                                        }
                                        // 导入数据举报编号去重
                                        XfImportexcel xfImportexcel = iXfImportexcelService.getXfImportexcelByBussinesNo(rowList.get(2));
                                        if (xfImportexcel != null) {
                                            repeatInfo += "【";
                                            repeatInfo += rowList.get(2);
                                            repeatInfo += "】";
                                            continue;
                                        }
                                        ImportexcelParam ImportexcelParam = new ImportexcelParam();
                                        ImportexcelParam.setStatus(rowList.get(0));//状态
                                        ImportexcelParam.setEmergencyLevel(rowList.get(1));//紧急程度
                                        ImportexcelParam.setBussinesNo(rowList.get(2));//业务编号
                                        ImportexcelParam.setCallSysNo(rowList.get(3));//来电编号
                                        ImportexcelParam.setRepeatFlag("初件".equals(rowList.get(4))?false:true);//重复标志
                                        ImportexcelParam.setReplyFlag("未答复".equals(rowList.get(5))?false:true);//答复标志
                                        ImportexcelParam.setProcessUnitName(rowList.get(6));//处理单位
                                        ImportexcelParam.setOperator(rowList.get(7));//经办人
                                        ImportexcelParam.setProcessamento(rowList.get(8));//处理方式
                                        ImportexcelParam.setProcessStatus(rowList.get(9));//处理状态
                                        ImportexcelParam.setCallPhoneNum(rowList.get(10));//来电号码
                                        ImportexcelParam.setLinkTelphone(rowList.get(11));//联系电话
                                        ImportexcelParam.setCreateBy(rowList.get(12));//创建人
                                        ImportexcelParam.setCallPerson(rowList.get(13));//来电人
                                        ImportexcelParam.setComplainContent(rowList.get(14));//投诉内容
                                        ImportexcelParam.setCallDate(StringUtils.isNullOrEmpty(rowList.get(15))?null:TimeUtils.string2Timestamp(DateUtil.YYYY_MM_DD_HH_MM_SS, rowList.get(15)));//来电日期
                                        ImportexcelParam.setCallPhoneNum(rowList.get(16));//来电人数
                                        ImportexcelParam.setItemType(rowList.get(17));//事项分类
                                        ImportexcelParam.setCallPurpose(rowList.get(18));//来电目的
                                        ImportexcelParam.setProcessTimeLimit(StringUtils.isNullOrEmpty(rowList.get(19))?null:TimeUtils.string2Timestamp(DateUtil.YYYY_MM_DD_HH_MM_SS, rowList.get(19)));//处理时限
                                        ImportexcelParamList.add(ImportexcelParam);
                                        
                                    }
                                }
                                // 调用excel数据导入保存业务实现方法
                                successImportNum = iXfImportexcelService.save(ImportexcelParamList, user);
                                // 导入失败条数
                                int failImportNum = ImportexcelParamList.size()-successImportNum;
                                // 导入结束时间,毫秒
                                long endTime = System.currentTimeMillis();
                                if(repeatInfo!=""){
                                    resultString = "成功导入"+successImportNum+"条记录,失败"+failImportNum+"条;共耗时"+(endTime-startTime)+"毫秒;"+repeatInfo+"编号数据已存在";
                                }else{
                                    resultString = "成功导入"+successImportNum+"条记录,失败"+failImportNum+"条;共耗时"+(endTime-startTime)+"毫秒。";
                                }
                                // 解析和入库都无问题,设置sucess和信息反馈
                                jsonResult.setSuccess(true, resultString);
                                System.out.println("================================================="+resultString+"=========");
                                
                            }else{
                                jsonResult.setSuccess(false, "文件没有数据记录");
                            }
                        }
    //                    List<List<String>> sheetList = resultList.get(0);
                        
                        
                    }else{
                        jsonResult.setSuccess(false, "文件没有数据记录");
                    }
                   
                }catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                // String path = "E:/springUpload" + file.getOriginalFilename();
                // 上传
                // file.transferTo(new File(path));
            }else{
                jsonResult.setSuccess(false, "无法获取文件");
            }
            System.out.println("==================================================结束解析Excel数据存入数据库======");
            return jsonResult;
        }

     2、解析Excel封装工具类

    package com.xxx.xx.utils;
    
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.text.DecimalFormat;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.commons.lang3.StringUtils;
    import org.apache.log4j.Logger;
    import org.apache.poi.hssf.usermodel.HSSFCell;
    import org.apache.poi.hssf.usermodel.HSSFDateUtil;
    import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.CellStyle;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.ss.usermodel.Sheet;
    import org.apache.poi.ss.usermodel.Workbook;
    import org.apache.poi.xssf.usermodel.XSSFCell;
    import org.apache.poi.xssf.usermodel.XSSFRow;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import com.mlsc.fw.common.exception.ParamDataException;
    import com.mlsc.fw.common.utils.DateUtil;
    import com.xxx.fw.web.JsonResult;
    
    public class ExcelUtil {
        private static Logger logger = Logger.getLogger(ExcelUtil.class);
    
        public static final String OFFICE_EXCEL_2003_POSTFIX = "xls";
        public static final String OFFICE_EXCEL_2010_POSTFIX = "xlsx";
        public static final String CELL_TYPE_STRING="String";
    
        /**
         * 适用于第一行是标题行的excel,
         * 
         * resultList --> sheetList --> rowList
         * 
         * @throws Exception
         */
        @SuppressWarnings("unchecked")
        public static JsonResult<List<List<String>>> parseExcel(InputStream in, String suffixName) throws ParamDataException {
            JsonResult<List<List<String>>> jsonResult = JsonResult.getDefaultResult();
            List<List<List<String>>> resultList = new ArrayList<>();
            List<List<String>> sheetList = null;
            List<String> rowList = null;
            String fileType = suffixName.substring(suffixName.lastIndexOf(".") + 1, suffixName.length());
            Workbook wb = null;
            try {
                if (fileType.equalsIgnoreCase(OFFICE_EXCEL_2003_POSTFIX)) {
                    wb = new HSSFWorkbook(in);
                } else if (fileType.equalsIgnoreCase(OFFICE_EXCEL_2010_POSTFIX)) {
                    wb = new XSSFWorkbook(in);
                } else {
                    jsonResult.setSuccess(false);
                    jsonResult.setMsg("请使用正确的导入模板");
                    return jsonResult;
                }
    
                int sheetSize = wb.getNumberOfSheets();
                // 文件中不止一张工作表
                if(sheetSize>1){
                    jsonResult.setSuccess(false);
                    jsonResult.setMsg("请使用正确的导入模板");
                    return jsonResult;
                }
                for (int i = 0; i < sheetSize; i++) {// 遍历sheet页
                    Sheet sheet = wb.getSheetAt(i);
    
                    int rowSize = sheet.getLastRowNum() + 1;
                    if(rowSize<=1){
                        jsonResult.setSuccess(false);
                        jsonResult.setMsg("导入模板没有数据记录");
                        return jsonResult;
                    }
                    sheetList = new ArrayList<>();
                    int columnSize = 0;
                    
                    // 从第一行标题行开始向下遍历行,包括第一行
                    for (int j = 0; j < rowSize; j++) {
                        Row row = sheet.getRow(j);
                        
                        // 遍历第一行作用是为了获取每一行的列数
                        if (j == 0) {
                            // bypass the 1st row
                            columnSize = row.getLastCellNum();
                            continue;
                        }
                        
                        // 略过空行
                        if (row == null) {
                            continue;
                        }
                        rowList = new ArrayList<>();
                        for (int m = 0; m < columnSize; m++) {
    //                        if (m == 0 && (row.getCell(3)==null||row.getCell(3).equals("")||row.getCell(3).getCellType() ==HSSFCell.CELL_TYPE_BLANK) ) {
    //                            break;
    //                        }
                            if (row.getCell(m) != null){
                                rowList.add(getValue(row.getCell(m)));
                            } else {
                                rowList.add("");
                            }
                        }
                        if (rowList.size() == columnSize)
                            sheetList.add(rowList);
                    }
                    resultList.add(sheetList);
                }
    
            } catch (Exception e) {
                logger.error("", e);
                throw new ParamDataException("上传文件内容格式不正确,请检查文件内容格式!");
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (Exception e) {
                        logger.error("关闭Workbook出现异常!", e);
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e) {
                        logger.error("关闭输入流出现异常!", e);
                    }
                }
            }
            jsonResult.setSuccess(true);
            jsonResult.setData(resultList);
            return jsonResult;
        }
    
        public static void exportByTemplate(FileInfo fileInfo, List<DataInfo> dataInfoList, HttpServletResponse response) {
            try {
                setResponseHeader(fileInfo.getGenerateFileName(), response);
                XSSFWorkbook workbook = createWorkBook(fileInfo, dataInfoList, response);
                outputFile(fileInfo, workbook, response);
            } catch (UnsupportedEncodingException e) {
                logger.error("", e);
            }
    
        }
    
        private static void outputFile(FileInfo fileInfo, XSSFWorkbook workbook, HttpServletResponse response) {
            BufferedOutputStream bufferedOutPut = null;
            try {
                OutputStream output = response.getOutputStream();
                bufferedOutPut = new BufferedOutputStream(output);
                bufferedOutPut.flush();
                workbook.write(bufferedOutPut);
            } catch (IOException e) {
                logger.error("", e);
            } finally {
                if (workbook != null) {
                    try {
                        workbook.close();
                    } catch (IOException e) {
                    }
                }
                if (bufferedOutPut != null) {
                    try {
                        bufferedOutPut.close();
                    } catch (IOException e) {
                    }
                }
    
            }
        }
    
        @SuppressWarnings("deprecation")
        private static XSSFWorkbook createWorkBook(FileInfo fileInfo, List<DataInfo> dataInfoList,
                HttpServletResponse response) {
            XSSFWorkbook workbook = null;
    
            try {
                File fi = new File(fileInfo.getTemplatePath() + fileInfo.getTemplateName());
                FileInputStream fs = new FileInputStream(fi);
                // 读取excel模板
                workbook = new XSSFWorkbook(fs);
                if (dataInfoList == null || dataInfoList.size() == 0) {
                    return workbook;
                }
                int rowIndex = 0;
                int columnIndex = 0;
                // sheet
                for (DataInfo dataInfo : dataInfoList) {
                    if(dataInfo.getSheetIndex()==null){
                        continue;
                    }
                    XSSFSheet sheet = workbook.getSheetAt(dataInfo.getSheetIndex());
                    rowIndex = dataInfo.getRowStart();
                    if(StringUtils.isNotEmpty(dataInfo.getModifiedTitle())){
                        CellStyle cs=sheet.getRow(0).getCell(0).getCellStyle();
                        sheet.getRow(0).getCell(0).setCellValue(dataInfo.getModifiedTitle());
                        sheet.getRow(0).getCell(0).setCellStyle(cs);
                    }
                    if (dataInfo.getData() == null || dataInfo.getData().isEmpty()) {
                        continue;
                    }
                    XSSFRow styleRow = null;
                    CellStyle style = null;
                    CellStyle style0 = null;
                    // row
                    for (int rIndex = 0; rIndex < dataInfo.getData().size(); rIndex++) {
                        if (dataInfo.getData().get(rIndex) == null || dataInfo.getData().get(rIndex).length == 0) {
                            continue;
                        }
                        columnIndex = dataInfo.getColumnStart();
                        XSSFRow row = sheet.getRow(rowIndex);
                        if (row == null) {
                            row = sheet.createRow(rowIndex);
                        }
                        if(rIndex==0){
                            styleRow = sheet.getRow(rowIndex);
                        }
    
                        // cell
                        for (int cIndex = 0; cIndex < dataInfo.getColumnLength(); cIndex++) {
                            if(styleRow.getCell(columnIndex)==null){
                                System.out.println(222);
                            }
                            style = styleRow.getCell(columnIndex).getCellStyle();
    
                            if(dataInfo.isGenIndex()){
                                XSSFCell cell0 = row.getCell(0);
                                if(cell0==null){
                                    cell0=row.createCell(0);
                                }
                                cell0.setCellValue(rIndex+1);
                                style0 = styleRow.getCell(0).getCellStyle();
                                cell0.setCellStyle(style0);
                            }
                            XSSFCell cell = row.getCell(columnIndex);
                            if (cell == null) {
                                cell = row.createCell(columnIndex);
                            }
    //                        if(cIndex==17){
    //                            System.out.println(333);
    //                        }
    //                        System.out.println("sheet:"+dataInfo.getSheetIndex()+"/rIndex:"+rIndex+"/cIndex:"+cIndex);
    //                        if(null == dataInfo.getData().get(rIndex)[cIndex]){
    //                            System.out.println(111);
    //                        }
                            if(dataInfo.getTypeMap()!=null && dataInfo.getTypeMap().containsKey(cIndex)){
                                if(CELL_TYPE_STRING.equals(dataInfo.getTypeMap().get(cIndex))){
                                    cell.setCellValue(dataInfo.getData().get(rIndex)[cIndex]);
                                }
                            }else if(null != dataInfo.getData().get(rIndex)[cIndex]
                                    && dataInfo.getData().get(rIndex)[cIndex].matches("^(-?\d+)(\.\d+)?$")){
                                cell.setCellValue(Double.parseDouble(dataInfo.getData().get(rIndex)[cIndex]));
                            }else{
                                cell.setCellValue(dataInfo.getData().get(rIndex)[cIndex]);
                            }
                            cell.setCellStyle(style);
                            columnIndex++;
                        }
                        rowIndex++;
                    }
                }
                List<Integer> hideSheetList=new ArrayList<>();
                for(DataInfo dataInfo : dataInfoList){
                    hideSheetList.add(dataInfo.getSheetIndex());
                }
    
                for(int i=0;i<workbook.getNumberOfSheets();i++){
                    if(!hideSheetList.contains(i)){
                        workbook.setSheetHidden(i, 2);
                    }
                }
    
            } catch (IOException e) {
                logger.error("", e);
            }
            return workbook;
        }
    
    
        @SuppressWarnings("deprecation")
        private static String getValue(Cell cell) {
            DecimalFormat df = new DecimalFormat("#.###");
            if (cell == null) {
                return "";
            }
            switch (cell.getCellType()) {
                case HSSFCell.CELL_TYPE_NUMERIC:
                    if (HSSFDateUtil.isCellDateFormatted(cell)) {
                        SimpleDateFormat sdf = new SimpleDateFormat(DateUtil.YYYY_MM_DD);
                        return sdf.format(HSSFDateUtil.getJavaDate(cell.getNumericCellValue()));
                    }
                    return df.format(cell.getNumericCellValue());
                case HSSFCell.CELL_TYPE_STRING:
                    return cell.getStringCellValue();
                case HSSFCell.CELL_TYPE_FORMULA:
                    return cell.getCellFormula();
                case HSSFCell.CELL_TYPE_BLANK:
                    return "";
    
            }
            return "";
        }
    
        @SuppressWarnings("unused")
        public static String  getExcelAcceptDepartment(InputStream in, String suffixName) throws ParamDataException {
            String header = "";
            String fileType = suffixName.substring(suffixName.lastIndexOf(".") + 1, suffixName.length());
            Workbook wb = null;
            try {
                if (fileType.equalsIgnoreCase(OFFICE_EXCEL_2003_POSTFIX)) {
                    wb = new HSSFWorkbook(in);
                } else if (fileType.equalsIgnoreCase(OFFICE_EXCEL_2010_POSTFIX)) {
                    wb = new XSSFWorkbook(in);
                } else {
                    throw new ParamDataException("读取的不是excel文件");
                }
    
                int sheetSize = wb.getNumberOfSheets();
                for (int i = 0; i < sheetSize; i++) {// 遍历sheet页
                    Sheet sheet = wb.getSheetAt(i);
                    header = getValue(sheet.getRow(2).getCell(1)).trim();
                    break;
                }
            } catch (Exception e) {
                logger.error("", e);
                throw new ParamDataException("上传文件内容格式不正确,请检查文件内容格式!");
            } finally {
                if (wb != null) {
                    try {
                        wb.close();
                    } catch (Exception e) {
                        logger.error("关闭Workbook出现异常!", e);
                    }
                }
                if (in != null) {
                    try {
                        in.close();
                    } catch (Exception e) {
                        logger.error("关闭输入流出现异常!", e);
                    }
                }
            }
            return header;
        }
    
        private static void setResponseHeader(String fileName, HttpServletResponse response)
                throws UnsupportedEncodingException {
            response.reset();
            // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
            // String date = sdf.format(new Date());
            // String newFileName=fileName+date;
            // 指定下载的文件名
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            response.setContentType("application/vnd.ms-excel;charset=UTF-8");
            response.setHeader("Pragma", "no-cache");
            response.setHeader("Cache-Control", "no-cache");
            response.setDateHeader("Expires", 0);
        }
    }
  • 相关阅读:
    android 中文 api (43) —— Chronometer
    SVN客户端清除密码
    Android 中文 API (35) —— ImageSwitcher
    Android 中文API (46) —— SimpleAdapter
    Android 中文 API (28) —— CheckedTextView
    Android 中文 API (36) —— Toast
    Android 中文 API (29) —— CompoundButton
    android 中文 API (41) —— RatingBar.OnRatingBarChangeListener
    Android 中文 API (30) —— CompoundButton.OnCheckedChangeListener
    Android 中文 API (24) —— MultiAutoCompleteTextView.CommaTokenizer
  • 原文地址:https://www.cnblogs.com/wmqiang/p/11158857.html
Copyright © 2011-2022 走看看