java导入demo

1.jsp:
     (h-ui)
     
<!--弹框-导入-->
     < div id = "festival_modal" class = "modal fade" tabindex = "-1" role = "dialog" aria-labelledby = "myModalLabel" aria-hidden = "true" >
         < form action = "" method = "post" class = "form form-horizontal" id = "form-festival-submit" >
             <!-- <div class="modal fade" id="festival_modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"> -->
                 < div class = "modal-dialog" role = "document" >
                     < div class = "modal-content radius" >
                         < div class = "modal-header" >
                             < button type = "button" class = "close" data-dismiss = "modal" aria-label = "Close" >< span aria-hidden = "true" > × </ span ></ button >
                             < h4 class = "modal-title" id = "myModalLabel" > 请选择Excel文件 </ h4 >
                         </ div >
                         < div class = "modal-body" >
                             < a href = "###" class = "form-control" style =" border : none ;" > 下载导入模板 </ a >< br >< br >
                             < span class = "btn-upload form-group" >
                              < input class = "input-text upload-url radius" type = "text" name = "uploadfile-1" id = "uploadfile-1" readonly >< a                                      href = "javascript:void();" class = "btn btn-primary radius" >< i class = "Hui-iconfont" > &#xe642; </ i > 浏览文件 </ a >
                              < input type = "file" name = "uploadfile" class = "input-file" id = "uploadfile" >
                             </ span >
                         </ div >
                         < div class = "modal-footer" >
                             < button class = "btn btn-primary" type = "submit" > 确定 </ button >
                             < button class = "btn" data-dismiss = "modal" aria-hidden = "true" > 关闭 </ button >
                         </ div >
                     </ div >
                 </ div >
             <!-- </div> -->
         </ form >
     </ div >
2.js:
     
$( "#form-festival-submit" ).validate({
        onkeyup: false ,
        focusCleanup: true ,
        success: "valid" ,
        submitHandler : function (form){
            $(form).ajaxSubmit({
                url : bPath+ '/festival/config/upload.hrm' ,
                type : 'post' ,
                dataType : 'text' ,
                data : {
                    
                },
                success : function (data){
                     if (data == 'SUCC' ){
                        alert( '导入成功!' );
                        window.location.reload();
                    } else if (data == "FAIL" ){
                        alert( '导入失败!' )
                    } else if (data == "diffrent_year" ){
                        alert( '日期存在错误,请核实后再导入!' )
                    } else if (data == "error_year" ){
                        alert( '日期有空值或者格式不正确!' )
                    }
                }
            })
        }
    })
3.java:
     
@RequestMapping (value= "upload" ,method=RequestMethod. POST )
     @ResponseBody
     public String upload(MultipartHttpServletRequest request ){
        String flag = AppConstants. ADD_FAIL ;
         long maxfileupload = 1024*1024*60;
        String suffix [] = new String[]{ "xls" , "xlsx" };
        List<MultipartFile> files = request .getFiles( "uploadfile" );
        List<BFestivalConfig> list = new ArrayList<BFestivalConfig>();
         if ( files != null ){
             list = beginUpload( request , maxfileupload , suffix , "uploadfile" );
        }
         if ( list != null && list .size() > 0){
             try { //确定导入的年份为同一年
                String year1 = list .get(0).getConfigDate().substring(0, 4);
                 for (BFestivalConfig config : list ) {
                    String year = config .getConfigDate().substring(0, 4);
                     if (!( year1 .equals( year ))){
                         flag = "diffrent_year" ;
                         return flag ;
                    }
                }
                HQLEntityString hes = new HQLEntityString(BFestivalConfig. class .getName());
                 hes .setCustomHql( " configDate like '%" + year1 + "%' " );
                List<BFestivalConfig> configList = configService .getQueryFestivalConfig( hes );
                 if ( configList != null && configList .size() > 0){ //防止重复导入,如果存在导入,则先删除
                     configService .deleteFestival( year1 );
                }
            } catch (Exception e ) {
                 flag = "error_year" ; //防止年份输入为空或者格式不正确
                 //System.err.println("日期栏有空值或者格式不正确!");
                 e .printStackTrace();
                 return flag ;
            }
             flag = configService .batchInsert( list ); //批量插入
        }
         return flag ;
    }

     private List<BFestivalConfig> beginUpload(MultipartHttpServletRequest request ,
             long maxfileupload , String[] suffix , String param ) {
             //1.获取
            String serverPath = PropertyManager.getString( "upload_file_path" ); //获取配置中存放在磁盘的路径
             if (StringUtils.isEmpty( serverPath )){
                 serverPath = request .getSession().getServletContext().getRealPath( "" );
            }
            File uploadPath = null ;
            SimpleDateFormat sdf = new SimpleDateFormat( "yyyy/MM/dd" ); //目录地址按照日期
            String date = sdf .format(System.currentTimeMillis());
            String s = serverPath + File. separatorChar ;
             uploadPath = new File( s + date + File. separator ); //上传文件目录
             if (! uploadPath .exists()){
                 uploadPath .mkdirs();
            }
            System. out .println( "uploadPath:" + uploadPath );
            
            List<BFestivalConfig> list = new ArrayList<BFestivalConfig>();
             try {
                List<MultipartFile> files = request .getFiles( param );
                 for (MultipartFile multipartFile : files ) {
                     //2.存到磁盘
                    CommonsMultipartFile fileMetaData = (CommonsMultipartFile) multipartFile ;
                    String realName = fileMetaData .getOriginalFilename(); //excel表的名字
                     if ( realName == null || StringUtils.isEmpty( realName )){
                         return null ;
                    }
                    String filesuffix = realName .substring( realName .lastIndexOf( "." ) + 1); //获取文件后缀xlsx
                     boolean isValid = false ; //判断文件支持的类型是否合法
                     for ( int i = 0; i < suffix . length ; i ++){
                         if ( filesuffix .trim().equalsIgnoreCase( suffix [ i ])){
                             isValid = true ;
                        }
                    }
                     if (! isValid ){
                         throw new Exception( "不合法的文件类型!" );
                    }
                    String newSuffix = filesuffix .trim().toLowerCase();
                     realName = System.currentTimeMillis() + "." + newSuffix ;
                    File saveFile = new File( uploadPath , realName );
                     fileMetaData .getFileItem().write( saveFile );
                     //3.存到数据库
                    String absolutePath = saveFile .getAbsolutePath();
                    System. out .println( "absolutePath:" + absolutePath );
                    FileInputStream fis = new FileInputStream( absolutePath );
                    Workbook workbook = WorkbookFactory.create( fis );
                    Sheet sheet ;
                     sheet = workbook .getSheetAt(0);
                     int rowNum = sheet .getLastRowNum();
                    Row row1 = sheet .getRow(1);
                     if ( row1 == null ){
                         throw new Exception( "错误:无效Excel,没有列名!" );
                    }
                    
                     for ( int rowIndex = 1; rowIndex <= rowNum ; rowIndex ++){
                        BFestivalConfig config = new BFestivalConfig();
                        Row row = sheet .getRow( rowIndex );
                         if ( row == null ){
                             return null ;
                        }
                         /*if(!("".equals(row.getCell(1).getStringCellValue()))){
                            
                        }*/
                         config .setConfigDate( row .getCell(0).getStringCellValue());
                         config .setIsWork( row .getCell(1).getStringCellValue());
                         config .setRemark( row .getCell(2).getStringCellValue());
                         //System.err.println(row.getCell(0).getStringCellValue());
                         list .add( config );
                    }
                }
            } catch (Exception e ) {
                 e .printStackTrace();
            }
         return list ;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个Java Excel Demo的示例代码,使用了阿里巴巴的EasyExcel库来实现Excel的导入导出功能。这个示例代码中包含了Excel工具类的实现,可以方便地在项目中使用。 ```java import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelReader; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.context.AnalysisContext;import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.metadata.Sheet; import com.alibaba.excel.metadata.Table;import com.alibaba.excel.support.ExcelTypeEnum; import com.alibaba.fastjson.JSON; import java.io.*; import java.util.ArrayList; import java.util.List; /** * Excel工具类 */ public class ExcelUtil { /** * 读取Excel文件 * * @param inputStream Excel文件输入流 * @param clazz 数据模型类 * @param <T> 数据模型类型 * @return 读取到的数据列表 */ public static <T> List<T> readExcel(InputStream inputStream, Class<T> clazz) { List<T> dataList = new ArrayList<>(); ExcelReader excelReader = EasyExcel.read(inputStream).build(); List<Sheet> sheets = excelReader.getSheets(); if (sheets != null && sheets.size() > 0) { for (Sheet sheet : sheets) { Table table = sheet.getTable(); if (table != null) { AnalysisEventListener<T> listener = new AnalysisEventListener<T>() { @Override public void invoke(T data, AnalysisContext context) { dataList.add(data); } @Override public void doAfterAllAnalysed(AnalysisContext context) { } }; excelReader.read(table, clazz, listener); } } } excelReader.finish(); return dataList; } /** * 写入Excel文件 * * @param outputStream Excel文件输出流 * @param dataList 数据列表 * @param clazz 数据模型类 * @param <T> 数据模型类型 * @throws IOException IO异常 */ public static <T> void writeExcel(OutputStream outputStream, List<T> dataList, Class<T> clazz) throws IOException { ExcelWriter excelWriter = EasyExcel.write(outputStream, clazz).excelType(ExcelTypeEnum.XLSX).build(); Sheet sheet = new Sheet(1, 0, clazz); excelWriter.write(dataList, sheet); excelWriter.finish(); } /** * 从文件中读取Excel数据 * * @param file Excel文件 * @param clazz 数据模型类 * @param <T> 数据模型类型 * @return 读取到的数据列表 * @throws FileNotFoundException 文件不存在异常 */ public static <T> List<T> readExcelFromFile(File file, Class<T> clazz) throws FileNotFoundException { InputStream inputStream = new FileInputStream(file); return readExcel(inputStream, clazz); } /** * 将数据写入Excel文件 * * @param file Excel文件 * @param dataList 数据列表 * @param clazz 数据模型类 * @param <T> 数据模型类型 * @throws IOException IO异常 */ public static <T> void writeExcelToFile(File file, List<T> dataList, Class<T> clazz) throws IOException { OutputStream outputStream = new FileOutputStream(file); writeExcel(outputStream, dataList, clazz); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值