说明:使用poi将内容写入excel,需要的包有
附件里是3.11版本的,足够用。也可以自己到https://poi.apache.org/ 下载
实现原理:获取到数据库中的内容后,将内容写入到excel中,再将excel读取到流中,由请求的response带回到本地
1.定义一个工具类来将数据写入excel再写入流中
public class ExportExcel {
public static void exportExcel(String[] headers,Collection dataset, String fileName,HttpServletResponse response) {
// 声明一个工作薄
XSSFWorkbook workbook = new XSSFWorkbook();
// 生成一个表格
XSSFSheet sheet = workbook.createSheet(fileName);
// 设置表格默认列宽度为20个字节
sheet.setDefaultColumnWidth((short) 20);
// 产生表格标题行
XSSFRow row = sheet.createRow(0);
for (short i = 0; i < headers.length; i++) {
XSSFCell cell = row.createCell(i);
XSSFRichTextString text = new XSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
try {
//只有表头,没有内容时
if (dataset!=null) {
// 遍历集合数据,产生数据行
Iterator it = dataset.iterator();
int index = 0;
while (it.hasNext()) {
index++;
row = sheet.createRow(index);
//如果自己定义对象,传入list集合,直接使用反射存入不同的对象内容,则如下
/*
T t = (T) it.next();
// 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值
Field[] fields = t.getClass().getDeclaredFields();
for (short i = 0; i < headers.length; i++) {
XSSFCell cell = row.createCell(i);
Field field = fields[i];
String fieldName = field.getName();
String getMethodName = "get" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
Class tCls = t.getClass();
Method getMethod = tCls.getMethod(getMethodName, new Class[] {});
Object value = getMethod.invoke(t, new Object[] {});
*/
String[] strArray=(String[]) it.next();
for (int i = 0; i < headers.length; i++) {
XSSFCell cell = row.createCell(i);
// 判断值的类型后进行强制类型转换
String textValue = null;
textValue=strArray[i];
// 其它数据类型都当作字符串简单处理
// if(value != null && value != ""){
// textValue = value.toString();
// }
if (textValue != null) {
XSSFRichTextString textString = new XSSFRichTextString(textValue);
cell.setCellValue(textString);
}
}
}
}
getExportedFile(workbook, fileName,response);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 方法说明: 指定路径下生成EXCEL文件
* @return
*/
public static void getExportedFile(XSSFWorkbook workbook, String name,HttpServletResponse response) throws Exception {
BufferedOutputStream fos = null;
try {
String fileName = name + ".xlsx";
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment;filename=" + new String( fileName.getBytes("gb2312"), "ISO8859-1" ));
fos = new BufferedOutputStream(response.getOutputStream());
workbook.write(fos);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
fos.close();
}
}
}
}
2.controller中的处理
@RequestMapping(params = "method=toDownConsistDetailDest")
public void toDownConsistDetailDest(HttpServletRequest request, HttpServletResponse response) {
//获取前台传入的id,取得对应id下 的文件路径
String resultIdTemp = request.getParameter("resultId");
int resultId=0;
if (resultIdTemp!=null) {
resultId=Integer.parseInt(resultIdTemp);
}
//在此处获取要写入excel表格中的数组
DataConsistResult consistResultById = dataConsistResultService.getConsistResultById(resultId);
String destFilePath = consistResultById.getDestFilePath();
String destInfo = dataConsistResultService.getConsistResultDetailByPath(destFilePath);
//目标库数据
String[] destHeader = null;
List<String[]> destData=new ArrayList<>();
if (!"暂无数据".equals(destInfo)) {
String[] split = destInfo.split("\n");
destHeader = split[0].split("\\|");
if (split.length>1) {
for (int i = 1; i < split.length; i++) {
String[] split2 = split[i].split("\\|");
destData.add(split2);
}
}else{
destData=null;
}
}
String destFileName=consistResultById.getTableName()+"目标库明细";
//需要传入的参数包括,表头字段数组 内容数组 文档的名字,response对象
ExportExcel.exportExcel(destHeader, destData, destFileName, response);
}
相关推荐
在IT行业中,经常需要将数据库中的数据转换成便于分析和分享的格式,Excel表格就是一种常用的工具。本示例展示了如何使用Node.js实现这一功能,特别是针对MySQL数据库。以下是关于这个主题的详细知识: 首先,我们...
数据库和Excel是两种在数据管理和分析中常用的工具。SQL Server是一种功能强大的关系型数据库管理系统,而Excel则是微软出品的一款电子表格应用,适用于处理小型到中等规模的数据集。两者之间的导入导出操作对于数据...
这个“Android 数据库并且导出Excel格式文件.zip”资源显然是一个关于如何在Android应用中使用SQLite数据库,并将数据导出为Excel格式的教程或示例项目。下面将详细阐述这一主题的相关知识点。 首先,我们来看...
1、java解析读取excel文件中的数据,并写入数据库。 2、java读取数据库数据,并导出为excel文件。 3、README.md中有详细的操作步骤示例。 使用说明: 1. 先使用postman导入:other/excel相关.postman_collection....
本示例主要关注如何利用ASP(Active Server Pages)技术将本地Excel数据导入到Access数据库中。这种方法同样适用于其他类型的数据库,只要适当地调整连接和处理方式。以下将详细介绍这个过程的关键知识点。 1. ASP...
标题“从SQL数据库导出到Excel”涉及到的关键技术点主要集中在如何将数据从关系型数据库管理系统(RDBMS)如MySQL、SQL Server、Oracle或PostgreSQL等导出,并转换成Excel电子表格格式。这种操作在数据分析、报告...
在某些场景下,我们可能需要将SQLite数据库中的数据导出为Excel格式,以便进行数据分析、报表制作或者与他人共享。本篇文章将详细介绍如何实现这一过程。 首先,我们需要了解Android中的SQLite数据库。SQLite是一个...
在标题为“从数据库导出数据到EXCEL源码”的项目中,我们关注的核心知识点是利用C#编程语言将数据库中的数据导出到Microsoft Excel文件中。这通常是数据分析、报告生成或数据备份等应用场景中的常见操作。 首先,C#...
数据库中的文件导出工具是用于将存储在数据库中的非结构化或半结构化数据,如文本文件(.TXT)、Microsoft Word文档(.doc)和Excel表格(.xls),提取到本地文件系统的一种实用程序。这样的工具对于数据分析、备份...
标题 "本地数据库导出Excel" 涉及到的是在Android环境下,利用SQLite数据库将数据导出并转换成Excel文件的过程。SQLite是Android系统中广泛使用的轻量级数据库,它允许开发者在本地存储和管理应用的数据。而Excel则...
本示例资源提供了一个RAR压缩包,包含了实现这一功能的源代码,主要讲解了两个核心部分:一是如何将数据写入Excel文件并保存在本地,二是如何在Web环境中将数据库中的数据导出为Excel并允许用户下载。 首先,我们要...
"Excel导出支持前台和后台导出"这一技术主题涉及到如何在Web应用程序中实现用户请求的数据导出到Excel文件,既可以选择在前端进行处理,也可以选择在后端完成。下面将详细介绍这两种方式及其相关技术。 一、前台...
档案系统文档Excel导出与附件抛到本地是一个常见的IT应用场景,尤其在企业级的信息管理和办公自动化系统中。这里主要涉及的技术点包括 Domino Lotus 数据库、Excel 导出、以及附件管理。 1. **Domino Lotus 数据库*...
3. **准备Excel文件**:确保Excel文件中的数据格式正确,并且包含所有需要导入到数据库表中的列。 #### 三、本地测试环境数据导入步骤 1. **登录PL/SQL Developer**:启动PL/SQL Developer并连接到本地测试数据库...
描述中提到的“查询到数据库数据后,导出excel并保存为本地资源”进一步确认了这个功能的具体步骤:首先从数据库检索数据,然后利用编程手段将其格式化并导出到Excel文件,最后保存在用户的本地计算机上。...
- 遍历读取的数据,将其转化为对应的Java对象,然后通过MyBatis的Mapper接口插入到数据库中。确保数据验证和异常处理。 4. **Excel数据导出** - 根据需求创建Excel模板,定义导出的列名和格式。 - 使用`...
在这个项目中,Apache POI库将被用来解析数据库中的数据,并将其格式化为Word文档或Excel表格的样式。例如,开发者可能会遍历数据库表中的每一行数据,创建一个新的表格行或Word段落,并填充相应的值。 对于XML文件...
这些库能够读取Excel文件,解析其内容,并将数据转换为JSON格式,以便在网页上进行展示或进一步处理。优点是无需服务器参与,用户交互更加流畅,但缺点是文件大小受限,大型Excel文件可能会导致浏览器性能下降。 ...
2. **Excel导出**:用户在Web应用中选择要导出的数据,服务器生成一个Excel文件并提供下载链接。这个过程包括: - SQL查询:根据用户的选择,服务器执行SQL查询,获取所需的数据。 - 数据格式化:将查询结果转化为...
本文将详细介绍如何通过SQL*Loader工具将Excel数据导出并导入到Oracle数据库。 首先,你需要在Excel中整理好你的数据,确保格式正确无误。以Microsoft Excel 2000为例,你可以创建一个新的工作簿,输入你要导入...