怎么在java里面批量导入文件_Java中Excel文件的批量导入和导出

需要jar包:04cfd9dcd2f0b2a87e9f8b22ec48c203.png

7b9fded6e3e2f6d55cc9b9c243274014.png

94b1ae50eaaf3a7c9ed5e1741dfa73e7.png

后面两个主要是保证Excel2007这个版本的。

页面提交时别忘了  enctype="multipart/form-data"

package com.jykj.comutils.magenUtils;

import java.io.InputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

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.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import org.springframework.web.multipart.MultipartFile;

public class ExcelUtil {

/**

* Excel导入

* @param myFile

* @throws Exception

*/

public static void getExcel(MultipartFile myFile) throws Exception{

Workbook workbook = null;

String filename = myFile.getOriginalFilename();

InputStream inS = myFile.getInputStream();

if (filename.endsWith("xls")) {//2003版本

workbook = new HSSFWorkbook(inS);

}else if (filename.endsWith("xlsx")) {//2007版本

workbook = new XSSFWorkbook(inS);

}else {

throw new Exception("文件不是Excel文件");

}

//如有多个工作薄,workbook.getSheetAt(2);获取第三个工作薄

Sheet sheet = workbook.getSheet("sheet1");

//Row row1 = sheet.getRow(0);获取第一行

//Cell cell = row1.getCell(6);获取第一行第六列信息

int rows = sheet.getLastRowNum();//获取文件有多少行。不包含第一行

//如需要获取多少列:sheet.getRow(0).getPhysicalNumberOfCells();这是获取第一行有多少列

if (rows == 0) {

throw new Exception("没有数据");

}

for (int i = 1; i <= rows+1; i++) {

Row row = sheet.getRow(i);

if (row != null) {//该行不为空

Student student = new Student();

student.setStuId(getCellValue(row.getCell(0)));//第一列数据 学号ID

student.setStuName(getCellValue(row.getCell(1)));//第二列数据 名称

student.setStuClass(getCellValue(row.getCell(2)));//第三列数据 班级

}

}

}

public static String getCellValue(Cell cell){

String value = null;

if (cell != null) {

switch (cell.getCellType()) {//判断cell的类型

case HSSFCell.CELL_TYPE_NUMERIC://数字

value = cell.getDateCellValue() + "";

if (HSSFDateUtil.isCellDateFormatted(cell)) {//判断cell是不是时间

Date date = cell.getDateCellValue();

if (date != null) {

value = new SimpleDateFormat("yyyy-MM-dd").format(date);

}else {

value = "";

}

}

break;

case HSSFCell.CELL_TYPE_STRING://字符

value = cell.getStringCellValue();

break;

case HSSFCell.CELL_TYPE_BLANK://空白

break;

case HSSFCell.CELL_TYPE_ERROR://错误

break;

default:

break;

}

}

return value;

}

}

/**

* 导出

* @param response

* @throws IOException

*/

public static void exportExcel(HttpServletResponse response) throws IOException{

//创建一个webbook,对应一个Excel文件

HSSFWorkbook workbook = new HSSFWorkbook();

//给Excel文件添加文件簿

HSSFSheet sheet = workbook.createSheet("Sheet1");

//给Excel文件添加行

HSSFRow row = sheet.createRow(0);

//

HSSFCellStyle style = workbook.createCellStyle();

//给第一行添加数据

HSSFCell cell = row.createCell(0);

cell.setCellValue("学号");

cell = row.createCell(1);

cell.setCellValue("名称");

row = sheet.createRow(1);

cell = row.createCell(0);

cell.setCellValue("10");

cell = row.createCell(1);

cell.setCellValue("马亘");

OutputStream output = response.getOutputStream();

response.reset();

SimpleDateFormat sdf = new SimpleDateFormat("yyyMMddHHmmss");

String fileName = sdf.format(new Date());//这里是系统时间

response.setHeader("Content-disposition", "attachment; filename="+java.net.URLEncoder.encode("文件名称", "UTF-8")+".xls");//这里添加文件名称

response.setContentType("application/mesexcel");

workbook.write(output);

output.flush();

IOUtils.closeQuietly(output);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值