老是,文件解析失败,但保存成功,代码也没写错呀

老是,文件解析失败,但保存成功,代码也没写错呀

package com.cl.service;

import com.cl.data.Course;
import com.cl.dto.ImportExcelParamDto;
import com.cl.dto.ImportExcelResultDto;
import com.cl.util.FileUtil;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

public class ExcelService {

    public CourseService imp(ImportExcelParamDto paramDto) throws IOException {
        //有来有回,对导入的一个结果进行预处理,封装一个复杂对象,对出错信息进行一个处理
      //  ImportExcelResultDto result=new ImportExcelResultDto();
        CourseService result=new CourseService();
       // result.setTitle(paramDto.getTitle());
        List<Course> courseList=new ArrayList<>();
        result.setCs(courseList);
        String fileName = null;
        try {
            fileName = FileUtil.save(paramDto.getExcel(), FileUtil.SAVE_PATH);
        } catch (Exception e) {
            e.printStackTrace();
            result.setMsg("上传文件保存失败!");
        }
        if (fileName != null) {
            Workbook workbook = null;
            try {
                //另外一种需求就是,只需要获取到文件的输入流,而不要保存文件
                //方法,new File(paramDto.getExcel().getInputStream())即可
                workbook = WorkbookFactory.create(new File(FileUtil.SAVE_PATH+fileName));
                Sheet sheet = workbook.getSheetAt(0);
                //sheet-row-cell
                int rowNum = sheet.getLastRowNum();
                for (int i = 0; i <= rowNum; i++) {
                    Course course=new Course();
                    Row row = sheet.getRow(i);
                    course.setCourseId(row.getCell(0).getStringCellValue());
                    course.setCourseName(row.getCell(1).getStringCellValue());
                    course.setCourseType(row.getCell(2).getStringCellValue());
                    course.setDescription(row.getCell(3).getStringCellValue());
                    course.setCourseTime((float)row.getCell(4).getNumericCellValue());
                    course.setUsername(row.getCell(5).getStringCellValue());
                    courseList.add(course);
                    System.out.println(row.getCell(0).getStringCellValue());
                    System.out.println(row.getCell(1).getStringCellValue());
                    System.out.println(row.getCell(2).getStringCellValue());
                    System.out.println(row.getCell(3).getStringCellValue());
                    System.out.println((float)row.getCell(4).getNumericCellValue());
                    System.out.println(row.getCell(5).getStringCellValue());
                }
            }catch (Exception e){
                e.printStackTrace();
                result.setMsg("文件解析失败");
            }finally {
                if(workbook != null) {
                    try {
                        //释放wookBook所占用的资源
                        workbook.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return result;

    }
  //导出课程相关信息
    public  Workbook export(boolean flag){
        Workbook workbook;
        //这个地方有分为03和07版excel
        if(flag){
            //03
            workbook=new XSSFWorkbook();
        }else{
            //07
            workbook=new HSSFWorkbook();
        }
        //思路:sheet->row->cell
        Sheet sheet = workbook.createSheet("my sheet");
        //创建一个二维数据来模拟数据
        List<List<String>> content = this.getContent();
        for(int i=0;i<content.size();i++) {
            Row row = sheet.createRow(i);
            List<String> rowData=content.get(i);
            for (int j = 0; j < rowData.size(); j++) {
                row.createCell(j).setCellValue(rowData.get(j));
                System.out.println(content.get(i).get(j));
            }
        }
        return workbook;
    }
    //获取用户提交的数据
    private   List<List<String>> getContent(){

        return null;
    }
}


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕阿莹 2019-02-24 12:57:18

是只有这个解析玩具失败的打印吗?是否有其他报错提示呢?报错提示是什么呢?

建议同学贴一下。不要在回复里贴代码,可以在回答中贴代码,不然代码会失去格式。

祝学习愉快。


  • 提问者 WindBelll #1
    恩,可以了,不知什么原因,用导出的excel就可以解析成功,而我自己弄的就不行,而且我也对每个单元格的格式进行了查看,老师在讲excel的时候也有特别说个单元格的格式要注意,如果都是常规的话是没有问题的,我对导出的excel进行更改后就用解释失败,好怪
    2019-02-24 13:13:06
  • 提问者 WindBelll #2
    老师,还在?我想在发起一个提问,有一个不解,虽然已经解决了,当觉得不应该会出错的,两者原理是一样,只是换了一种发法就行了,希望老师您来解答,可以?
    2019-02-24 22:16:00
  • 好帮手慕阿莹 回复 提问者 WindBelll #3
    建议同学检查一下你的单元格的格式和老师单元格的格式是否完全一致呢? 如果不一致,改成一致的后,是否可以导入呢? 祝学习愉快。
    2019-02-25 12:01:39
提问者 WindBelll 2019-02-23 11:49:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师