java_web接收前端传的excel文件读取数据

这篇具有很好参考价值的文章主要介绍了java_web接收前端传的excel文件读取数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

#本次做一个将患者数据导入到某个模块的功能,前期集成的代码时不时出现异常,本次进行修改记录

//controller层
 /**
     * 导入患者数据
     */
    @RejectReplayRequest
    @PostMapping("/importData")
    public Result<?> importData(HttpServletRequest request, LoginUser loginUser, @Param(value = "articleExtDataReq") String articleExtDataReq) throws IOException, ParseException {
        JSONObject jsonObject = JSONObject.parseObject(articleExtDataReq);
        String merchantId = jsonObject.getString("articleId");
        return articleExtDataService.importData(request, loginUser, merchantId);
    }


//service层
/**
     * 导入更新商品
     */
    Result<?> importData(HttpServletRequest request, LoginUser loginUser, String articleId) throws IOException, ParseException;

//impl实现


    @Override
    public Result<?> importData(HttpServletRequest request, LoginUser loginUser, String articleId) throws IOException, ParseException {
        log.info("importData in articleId: " + articleId);
        //获取厂商信息
        Article byId = articleService.getById(articleId);
        if (Objects.isNull(byId)) {
            return Result.error("您选择的文章不存在");
        }
        Map<String, Long> titleAndIdMap = new HashMap<>();
        Map<Integer, Long> columnIndexAndExtIdMap = new HashMap<>();
        List<ArticleExt> articleExts = sysArticleExtService.listByArticleId(articleId, loginUser);
        articleExts.forEach(item -> {
            titleAndIdMap.put(item.getTitle(), item.getId());
        });

        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {

            List<ArticleExtData> articleExtDataList = new ArrayList<>();
            // 获取上传文件对象
            MultipartFile file = entity.getValue();
            InputStream inputStream = file.getInputStream();
            // 创建工作簿对象
            Workbook workbook = new XSSFWorkbook(inputStream);

            Date uploadDate = null;
            // 读取第一个工作表的数据
            Sheet sheet = workbook.getSheetAt(0);
            for (Row row : sheet) {
                int rowNum = row.getRowNum();
                Iterator<Cell> cellIterator = row.cellIterator();
                JSONObject jsonObject = new JSONObject();
                while (cellIterator.hasNext()) {
                    Cell cell = cellIterator.next();
                    cell.setCellType(CellType.STRING);
                    int columnIndex = cell.getColumnIndex();
                    // 处理单元格数据,这里只是简单地打印出来
                    String stringCellValue = cell.getStringCellValue();
//                    System.out.print(rowNum + "  " + columnIndex + "  " + stringCellValue + "\t");
                    if (rowNum == 0) {
                        Long ExtId = titleAndIdMap.get(stringCellValue);
                        if (ExtId == null && !stringCellValue.contains("时间")) {
                            //判断excel标题是否存在于系统
                            return Result.error("系统不存在【" + stringCellValue + "】参数,请在扩展数据中添加该参数信息");
                        }
                        if (ExtId != null) {
                            columnIndexAndExtIdMap.put(columnIndex, ExtId);
                        }
                    } else {
                        if (rowNum == 1 && columnIndex == 5 && stringCellValue.length() == 5) {
                            stringCellValue = DateUtils.ExcelDoubleToDate(stringCellValue);
                            uploadDate = DateUtils.parseDate(stringCellValue, "yyyy-MM-dd");
                        }
                        if (columnIndex != 5) {
                            jsonObject.put(String.valueOf(columnIndexAndExtIdMap.get(columnIndex)), stringCellValue);
                        }
                    }
                }
                ArticleExtData articleExtData = new ArticleExtData();
                articleExtData.setArticleId(articleId).setCreatedBy(loginUser.getId()).setUpdatedBy(loginUser.getId()).setValue(jsonObject.toJSONString()).setCreatedTime(uploadDate).setUpdatedTime(uploadDate);
                articleExtDataList.add(articleExtData);
//                System.err.println(jsonObject);
            }
            articleExtDataService.saveBatch(articleExtDataList);
        }

        return Result.OK("导入完成");
    }

前端代码文章来源地址https://www.toymoban.com/news/detail-759261.html

//html
<el-upload
              class="upload-demo"
              action="#"
              :show-file-list="false"
              :on-change="importData"
              :auto-upload="false"
              accept=".xlsx, .xls"
              style="display: inline; margin-right: 10px"
            >
              <el-button type="primary" icon="el-icon-download"
                >导入
              </el-button>
            </el-upload>
            <el-button type="text" @click="downTemplate()"
              >下载导入模板
            </el-button>


//js

import axios from "axios";

importData(param) {
      const that = this;
      showLoading(); //显示加载中
      let formData = new FormData(); //声明一个FormDate对象
      formData.append("file", param.raw); //把文件信息放入对象中
      formData.append(
        "articleExtDataReq",
        JSON.stringify(this.articleExtDataObj.formData)
      );
      this.path = localStorage.getItem("urlcode");
      let text = `${this.path}/articleExtData/importData`;
      axios({
        url: text,
        method: "post",
        async: false,
        processData: false,
        contentType: false, // 不设置数据类型
        data: formData,
        headers: {
          "X-Access-Token": sessionStorage.getItem("token")
        }
      })
        .then(res => {
          if (res.data.success == true) {
            that.$message({
              type: "success",
              message: res.data.message
            });
            setTimeout(() => {
              that.getlist();
            }, 600);
          } else {
            that.$message.error(res.data.message);
          }
        })
        .catch(err => {
          that.$message({
            type: "error",
            message: "导入失败"
          });
        });
      setTimeout(() => {
        hideLoading();
      }, 1200);
    },
    // 下载导入模板
    downTemplate() {
      window.open(
        "https://qiniu.sjhlwyy.com/ExcelTemp/Free_consultation_activities_Patient_data.xlsx"
      );
    },

到了这里,关于java_web接收前端传的excel文件读取数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 读取excel文件

    先导入依赖: 1、获取想要上传excel文件的路径 2、获得路径后,通过路径定位生成数据流,使用FileInputStream方法读取路径对应文件的原始字节流。 3、使用ExcelUtils工具类读取 字节流 + 路径。 4、ExcelUtils工具类对数据进行处理,因为表格有行和列,所以处理完数据使用二维集合

    2024年02月04日
    浏览(31)
  • Java 使用 easyexcel 读取 excel 文件

    easyexcel 官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel 1. 引入依赖并给出示例 excel     2. 两种读取的方式         (1)确定表头:建立对象,和表头形成映射。(这里以此为例)         (2)不确定表头:每一行映射为 MapString, Object。 3. 先创建 excel 中表头对应

    2024年02月12日
    浏览(39)
  • Java EasyExcel高效读取保存excel文件

    阿里开源出一款易上手,且比较节省内存的Excel操作框架:EasyExcel。EasyExcel是一行一行进行读取,再大的excel也不会出现OOM。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存

    2024年02月16日
    浏览(36)
  • Java:读取excel文件中的内容(简单、详细、明确、有全部代码)

    注意: jxl 仅支持读取 .xls 文件,读 .xlsx 会报错! 在 pom.xml 中引入 jxl 的依赖 支持读取 xlsx 文件的 poi 依赖说明、使用方法及更多详细内容可以参考: Java读取excel的方式,一篇文章看懂(详细)

    2024年02月12日
    浏览(28)
  • JAVA-9-[SpringBoot]非web应用程序创建和配置文件读取

    SpringBoot 常用读取配置文件的 3 种方法! Spring Boot非web应用程序的创建方式 有时有些项目不需要提供web服务,比如跑定时任务的项目,如果都是按照web项目启动,这个时候会浪费一些资源。 1、Spring CommandLinerunner接口实现booot入口类; 2、run()方法覆盖commandlineruner接口,在run方

    2023年04月08日
    浏览(52)
  • 前端 读取/导入 Excel文档

    情况: 需要通过 Excel表 ,将数据导入到数据库,但是后台人员出差了,我又只会 PHP ,没用过 node ,所以只能前端导入 Excel文件 ,然后循环调用后台的单条添加接口了。 库: Excel.js(版本4.3.0) CDN地址: Excel.js 中文文档:https://gitee.com/alan_scut/exceljs 下面是动态Excel表单 下面

    2024年02月07日
    浏览(36)
  • Java教程:如何读取服务器文件并推送到前端并下载,图片格式以浏览器渲染模式

    ----在我们做文件上传时,通常会保存文件的相对路径在数据库中,然后返回前端http访问路径,来对文件进行下载或图片预览功能,但是有时候我们并不想直接返回文件访问地址给前端,这就用到了Java当中的文件输入输出流,将文件以流的方式响应给浏览器,并渲染出图片或

    2024年02月03日
    浏览(38)
  • Spark读取Excel文件

    2023年12月31日
    浏览(40)
  • C#读取Excel文件

    使用C#读取excel文件,需要引用excel名称空间。以及DataSet数据集合,将Excel转入其中方便读写。例如下面这个方法,就是用于Excel表格中的信息。   获取了这张表的整体信息后,我们可以去尝试获取表的具体单元格信息。方法如下: 我们可以思考一下,为什么在游戏开发过程中

    2024年02月11日
    浏览(37)
  • pythonpandas读取excel文件

    使用Python中的pandas库可以方便地读取Excel文件,具体步骤如下: 首先需要导入pandas库: import pandas as pd 使用pandas的 read_excel 函数读取Excel文件,例如读取名为\\\"data.xlsx\\\"的文件: df = pd.read_excel(\\\'data.xlsx\\\') 可以通过指定sheet名或者sheet编号来读取特定的sheet,例如读取第二个sheet:

    2024年02月15日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包