如何将数据库某个表的部分数据通过SELECT语句查询出来后,结果能够写入到空白的EXCEL中

如何将数据库某个表的部分数据通过SELECT语句查询出来后,结果能够写入到空白的EXCEL中,第1张

用企业管理器的数据导出工具:
选择数据库---右击--所有任务---导出数据

源选择数据库,目的选择microsoft Excel 97-2000,然后选择要导入的Excel文件
下一步“用一条查询指定要传输的数据”
下一步,输入查询语句,下一步,下一步。。。

上传到服务器后通过poi来解析也可以不过处理完该文件后, 一定要记得删除该文件, 或者提供脚本定时来删除
或者不用上传到服务器, 因为后台在获取到>这个多了去了 ,apache 绝对是 开源里面的领头羊 for example: 分类 项目名 说明开发语言 服务器 (共20) Apache >请检查以下内容:
1、poi的JAR包是否上传到服务器
2、服务器上以前是否有poi相关的JAR包(或其他JAR包中的class)与现在的POI JAR包冲突? 需要重点检查一下。

import orgapachepoihssfusermodelHSSFCell;
import orgapachepoihssfusermodelHSSFCellStyle;
import orgapachepoihssfusermodelHSSFRow;
import orgapachepoihssfusermodelHSSFSheet;
import orgapachepoihssfusermodelHSSFWorkbook;
import orgapachepoipoifsfilesystemPOIFSFileSystem;
/
@param inputFile 输入模板文件路径
@param outputFile 输入文件存放于服务器路径
@param dataList 待导出数据
@throws Exception
@roseuid:
/
public void exportExcelFile(String inputFile, String outputFile, List dataList) throws Exception
{
//用模板文件构造poi
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(inputFile));
//创建模板工作表
HSSFWorkbook templatewb = new HSSFWorkbook(fs);
//直接取模板第一个sheet对象
HSSFSheet templateSheet = templatewbgetSheetAt(1);
//得到模板的第一个sheet的第一行对象 为了得到模板样式
HSSFRow templateRow = templateSheetgetRow(0);

//HSSFSheet timplateSheet = templatewbgetSheetAt(1);
//取得Excel文件的总列数
int columns = templateSheetgetRow((short) 0)getPhysicalNumberOfCells();
Debugprintln("columns is : " + columns);
//创建样式数组
HSSFCellStyle styleArray[] = new HSSFCellStyle[columns];
//一次性创建所有列的样式放在数组里
for (int s = 0; s < columns; s++)
{
//得到数组实例
styleArray[s] = templatewbcreateCellStyle();
}
//循环对每一个单元格进行赋值
//定位行
for (int rowId = 1; rowId < dataListsize(); rowId++)
{
//依次取第rowId行数据 每一个数据是valueList
List valueList = (List) dataListget(rowId - 1);
//定位列
for (int columnId = 0; columnId < columns; columnId++)
{
//依次取出对应与colunmId列的值
//每一个单元格的值
String dataValue = (String) valueListget(columnId);
//取出colunmId列的的style
//模板每一列的样式
HSSFCellStyle style = styleArray[columnId];
//取模板第colunmId列的单元格对象
//模板单元格对象
HSSFCell templateCell = templateRowgetCell((short) columnId);
//创建一个新的rowId行 行对象
//新建的行对象
HSSFRow hssfRow = templateSheetcreateRow(rowId);
//创建新的rowId行 columnId列 单元格对象
//新建的单元格对象
HSSFCell cell = hssfRowcreateCell((short) columnId);
//如果对应的模板单元格 样式为非锁定
if (templateCellgetCellStyle()getLocked() == false)
{
//设置此列style为非锁定
stylesetLocked(false);
//设置到新的单元格上
cellsetCellStyle(style);
}
//否则样式为锁定
else
{
//设置此列style为锁定
stylesetLocked(true);
//设置到新单元格上
cellsetCellStyle(style);
}
//设置编码
cellsetEncoding(HSSFCellENCODING_UTF_16);
//Debugprintln("dataValue : " + dataValue);
//设置值 统一为String
cellsetCellValue(dataValue);
}
}
//设置输入流
FileOutputStream fOut = new FileOutputStream(outputFile);
//将模板的内容写到输出文件上
templatewbwrite(fOut);
fOutflush();

// *** 作结束,关闭文件
fOutclose();

}

表单form 里加入<s:token></s:token> 代码,
token标签是用于防止多次提交的标签。避免了刷新页面时多次提交,如果需要该标签起作用,则应该在Struts2的配置文件中启用TokenInterceptor拦截器或TokenSessionStoreInterceptor拦截器。token标签的实现原理是在表单中拉架一个隐藏域,每次加载该页面时,该隐藏域的值都不相同。而TokenInterceptor拦截器则拦截所有用户请求,如果两次请求时该隐藏域的值相同,则阻止表单提交。
然后需要你自己写一个拦截器,拦截错误信息,拦截下来之后给出的提示语句就可以你自己定了比如“当前页面正在提交过程中,不允许重复提交!”

a标签点击请求后,在服务端根据excel对应的数据 利用poi生成一个workbook对象,
然后
OutputStream os = null;
responsesetContentType("application/vndopenxmlformats-officedocumentspreadsheetmlworksheet");
responsesetHeader("Content-Disposition","attachment;filename=" + URLEncoderencode("供应商信息"+new Date()toString(), "UTF-8") + "xslx"); //以下载形式,如果是直接在线打开
// responsesetHeader("Content-Disposition","inline;filename="
//中文文件名请适当转码,后缀名根据创建workbook时的版本决定(2003-HSSFWorkbook-xls;2007-XSSFWorkbook-xlsx)
os = responsegetOutputStream();
workbookwrite(os);
responseflushBuffer();
(io流的关闭和io异常扑捉自行处理,poi生成excel的过程参照poi文档,无非就是sheet,row,cell的 *** 作)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12807923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存