spring boot实现excel上传解析

controller:

  @RequestMapping(value = "/ImportExcel", method = RequestMethod.POST)
  public JSONObject templateImportExcel(@RequestParam(value = "file", required = true) MultipartFile file) {
   
    return baseService.templateImportExcel(file);
  }
```java
在这里插入代码片

service:

```ja@Service
public class BaseService {
   

//
//  @Autowired
//  JdbcTemplate jdbcTemplate;
  public JSONObject templateImportExcel(MultipartFile file) {
   
    String originalFilename = file.getOriginalFilename();
    // 默认从第一行开始读取
    InputStream is = null;
    Map<String, List<Map<String, Object>>> excel = null;
    try {
   
      is = file.getInputStream();
      excel = ExcelUtil.parseExcelSheets(is, originalFilename);
      // sheet1
      List<Map<String, Object>> forList = excel.get("key0");
      // sheet2
      List<Map<String, Object>> forList2 = excel.get("key1");



      System.out.println("map"+excel);
    } catch (Exception e) {
   
      e.printStackTrace();
    }

excel解析工具类:

package com.example.demo.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.net.URLEncoder;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

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.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
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.util.IOUtils;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

import com.alibaba.fastjson.JSON;

@Component
public class ExcelUtil {
   

	private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
	private final static String excel2003L = ".xls"; // 2003- 版本的excel
	private final static String excel2007U = ".xlsx"; // 2007+ 版本的excel

	/**
	 * Float类型数据小数位
	 */
	private String floatDecimal = ".00";
	/**
	 * Double类型数据小数位
	 */
	private String doubleDecimal = ".00";

	private DecimalFormat floatDecimalFormat = new DecimalFormat(floatDecimal);
	/**
	 * The Double decimal format.
	 */
	private DecimalFormat doubleDecimalFormat = new DecimalFormat(doubleDecimal);
	/**
	 * 日期格式化
	 */
	private SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

	private XSSFWorkbook workbook;

	/**
	 * 将流中的Excel数据转成List<Map>
	 * 
	 * @param in       输入流
	 * @param fileName 文件名(判断Excel版本)
	 * @param mapping  字段名称映射
	 * @return
	 * @throws Exception
	 */
	public static List<Map<String, Object>> parseExcel(InputStream in, String fileName) throws Exception {
   
		// 根据文件名来创建Excel工作薄
		Workbook work = getWorkbook(in, fileName);
		if (null == work) {
   
			throw new Exception("创建Excel工作薄为空!");
		}
		Sheet sheet = null;
		Row row = null;
		Cell cell = null;
		// 返回数据
		List<Map<String, Object>> ls = new ArrayList<Map<String, Object>>();

		// 遍历Excel中所有的sheet work.getNumberOfSheets();
		for (int i = 0; i < 1; i++) {
   
			sheet = work.getSheetAt(i);
			if (sheet == null)
				continue;

			// 取第一行标题
			row = sheet.getRow(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值