Excel导出(适合初学者)

Stella981
• 阅读 663

这里有两个版本`,第一个是我自己写的一个导入导出,另一个是不知道复制哪位大佬的,这已经不重要了,重点是自己看懂会用就可以

Excel导出步骤:生成Excel文档--------新建Sheet--------新建Row-------新建Cell单元格--------写单元格数据

版本一:

这个适合刚开始学习Excel导出,代码简洁易懂

package com.jttxtech.www.controller;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import com.jttxtech.www.entity.ProductRecordBean;
import com.jttxtech.www.service.ProductRecordService;
import com.jttxtech.www.util.ExportExcelUtil;
import com.jttxtech.www.util.FileUtils;

@RequestMapping("/api/find")
@ResponseBody
public String Export2(HttpServletRequest request,HttpServletResponse response) throws Exception{
List dataList = productRecordService.findAll();
//生成Excel文件
HSSFWorkbook hssfWorkbook=new HSSFWorkbook();
HSSFSheet sheet=hssfWorkbook.createSheet("项目记录");
//表头
HSSFRow headRow=sheet.createRow(0);
headRow.createCell(0).setCellValue("数据");
headRow.createCell(1).setCellValue("提交时间");
headRow.createCell(2).setCellValue("更新时间");
headRow.createCell(3).setCellValue("提交人");
headRow.createCell(4).setCellValue("项目编码");
//表数据
for(ProductRecordBean date :dataList) {
HSSFRow dataRow=sheet.createRow(sheet.getLastRowNum()+1);
dataRow.createCell(0).setCellValue(date.getRecord_data());
dataRow.createCell(1).setCellValue(date.getSubmit_time());
dataRow.createCell(2).setCellValue(date.getUpdate_time());
dataRow.createCell(3).setCellValue(date.getInfo_id());
dataRow.createCell(4).setCellValue(date.getProject_code());

}

//下载导出
//设置头信息

response.setContentType("application/vnd.ms-excel");
String filename="项目记录表.xls";
String agent = request.getHeader("user-agent");
filename=FileUtils.encodeDownloadFilename(agent, filename);
response.setHeader("Content-disposition", "attachment; filename="+filename);//文件名这里可以改
OutputStream output=response.getOutputStream();
hssfWorkbook.write(output);
hssfWorkbook.close();

return null;

}

这是上面代码需要用到的工具类:

package com.jttxtech.www.util;

import java.io.IOException;

import java.net.URLEncoder;

import sun.misc.BASE64Encoder;
public class FileUtils {

public static String encodeDownloadFilename(String agent, String filename) throws IOException {
if (agent.contains("MSIE")) {
// IE浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
} else if (agent.contains("Firefox")) {
// 火狐浏览器
BASE64Encoder base64Encoder = new BASE64Encoder();
filename = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
} else {
// 其它浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
return filename;
}
}

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java导出多sheet的excel
excel工具类,适合单sheet或多sheet的excel表格导出packageUtil;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.\;importjavax.servlet.ServletOut
Wesley13 Wesley13
3年前
java实现 Excel 导入导出
日常工作中,Excel是我们经常需要处理的文件,报表的生成,数据的导出,几乎每个项目都需要写对应的处理.作者也是编写这块代码大军的一员,能否有方法让我们不用重复编写代码呢,能否只要简单配置就可以完成我们的Excel生成呢,作者分析了Excel和对象的关系,发现Row就是我们的一个对象cell是我们的一个属性,从而开发了Easypoi,下面讲解下用
Stella981 Stella981
3年前
HuTool工具类使用之Excel文档的导入导出
HuTool工具类使用之Excel文档的导入导出前言在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel导入导出功能,可以大幅度减少今后开发中Excel的导入导出的相关操作。
Stella981 Stella981
3年前
PHP导入导出EXCELl,CSV
PHP导入导出Excel,CSVHTML<formaction"{:U('Admin/Unit/importcsv')}"method"post"name"myform"id"myform"enctype"multipart/formdata"<input
Stella981 Stella981
3年前
Excel数据转化为sql脚本
在实际项目开发中,有时会遇到客户让我们把大量Excel数据导入数据库的情况。这时我们就可以通过将Excel数据转化为sql脚本来批量导入数据库。1在数据前插入一列单元格,用来拼写sql语句。 具体写法:"insertintot\_student(id,name,age,class)value("&B2&",'"&C2&"',"&D2&"
Stella981 Stella981
3年前
EasyExcel写入百万级数据到多sheet
EasyExcel是什么?快速、简单避免OOM的java处理Excel工具一、项目需求    从mongo库中查询数据,导出到excel文件中。但是动态导出的excel有多少列、列名是什么、有多少sheet页都需要动态获取。所以生成的excel也必须是动态生成,不能通过注解配置对象映射。而且写入的数据量,有可能达到100W级,使用传统的PO
Wesley13 Wesley13
3年前
35岁是技术人的天花板吗?
35岁是技术人的天花板吗?我非常不认同“35岁现象”,人类没有那么脆弱,人类的智力不会说是35岁之后就停止发展,更不是说35岁之后就没有机会了。马云35岁还在教书,任正非35岁还在工厂上班。为什么技术人员到35岁就应该退役了呢?所以35岁根本就不是一个问题,我今年已经37岁了,我发现我才刚刚找到自己的节奏,刚刚上路。
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这