社区
Web 开发
帖子详情
如何生成Excel文件
pauluo
2003-12-19 04:18:15
环境tomcat + j2sdk1.4.1_02
在jsp中,要如何将sql语句查询到的数据生成到Excel文件中
或保存成Excel文件?
...全文
216
10
打赏
收藏
如何生成Excel文件
环境tomcat + j2sdk1.4.1_02 在jsp中,要如何将sql语句查询到的数据生成到Excel文件中 或保存成Excel文件?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Sensible
2010-06-04
打赏
举报
回复
有没有更好的解决方法 我想 生成excel然后下载下来
晃晃悠悠_HW
2003-12-20
打赏
举报
回复
我没用过poi,我用的是jxl,感觉还不错!
上面仁兄的做法都很不错,值得借鉴,祝你成功
晃晃悠悠_HW
2003-12-20
打赏
举报
回复
不错!!!
fengjingyu
2003-12-19
打赏
举报
回复
private void downLoad(HttpServletResponse response,ResultSet rs)
throws Exception
{
PrintWriter out;
StringBuffer sb = new StringBuffer();
sb.append("a1");
.
.
sb.append("z1");
while(rs.next)
{
sb.append(createFileLine(rs.getString("aaa"),false);
sb.append(createFileLine(rs.getString("bbb"),false);
.
.
sb.append(createFileLine(rs.getString("zzz"),true);
}
if(sb!=null ))
{
response.setContentType("application/BizFirm-csv; charset=UTF-8");
response.setHeader("Content-disposition", "application/octet-stream;filename=orderList.CSV");
try
{
out = response.getWriter();
out.print(strDownloadData);
}
catch (IOException e)
{
throw new BfException(BfException.ORDERLIST_DOWNLOAD_ERR);
}
out.close();
}
}
private String createFileLine(String strVal,boolean isEnd)
{
String strValue = "";
String strComma = ",";
String strBr = "\n";
strVal = addQuotLR(replaceEnterToBr(replaceSimpleQuot(strVal)));
if (isEnd)
{
strValue = strVal + strBr;
}
else
{
strValue = strVal + strComma;
}
return strValue;
}
416
2003-12-19
打赏
举报
回复
用POI吧,这个做个参考,是把rs转化为Excel文件的
import java.util.*;
import org.apache.poi.hssf.usermodel.*;
import java.io.*;
public class DataExchange {
/**
* 一个Excel文件的层次:Excel文件->工作表->行->单元格
* 对应到POI中,为:workbook->sheet->row->cell
*
* 程序主要流程:
* 1、创建一个输出流并依次创建一个文件,工作表,若干行及每行的单元格
* 2、用一个循环将rs中的直附给Excel表
* 3、将表写如输出流输出并关闭输出流
*
* @param rs 要转换为Excel文件的数据库查询结果集
* @param userName 当前用户名
* @param moduleName 当前模块名
* @param dir 站点的相对路径,可由String file = request.getRealPath("/")获取
* @return 生成的文件名
*/
public static String rsToExcel(String userName, String moduleName, String dir, ResultSet rs)
{
short rownum = 0;
String str = null;
//生成文件名
GetDate currentDate = new GetDate();
String path = dir + File.separator + "temp" + File.separator;
String name = userName + "_" + moduleName + "_" + currentDate.getYear() + currentDate.getMonth() + currentDate.getDayOfMonth() + ".xls";
String fullName = path + name;
//获取结果集rs中的信息
int rsColCount = 0;
ResultSetMetaData rsmd = null;
try {
rsmd = rs.getMetaData();
rsColCount = rsmd.getColumnCount();
}
catch (SQLException e2)
{
e2.printStackTrace();
}
// 创建一个新的文件
File newFile = new File( fullName );
//创建一个输出流
FileOutputStream out = null;
try {
out = new FileOutputStream( newFile );
} catch (FileNotFoundException e) {
e.printStackTrace();
}
// 创建一个新的Workbook
HSSFWorkbook wb = new HSSFWorkbook();
// 在新的Workbook下创建一个Sheet
HSSFSheet s = wb.createSheet();
// 声明一个行的引用
HSSFRow r = null;
// 声明一个单元格的引用
HSSFCell c = null;
// 将第一个工作表命名为worksheet
wb.setSheetName(0, "worksheet");
// 将结果集rs中的值放到Excel中对应的位置
try
{
while(rs.next())
{
// 新建一行
r = s.createRow(rownum++);
//为每一行附值
for (short cellnum = (short)0; cellnum < rsColCount; cellnum++)
{
// 创建一个单元格
c = r.createCell(cellnum);
//解决中文问题
c.setEncoding(HSSFCell.ENCODING_UTF_16);
// 为单元格附值
str = rs.getString(cellnum + 1);
c.setCellValue(str);
}
}
}
catch (SQLException e3)
{
e3.printStackTrace();
}
// 将workbook写入输出流并关闭文件
try
{
wb.write(out);
out.close();
}
catch (IOException e1)
{
e1.printStackTrace();
}
return name;
}
}
javapopo
2003-12-19
打赏
举报
回复
Downloads The JACOB binary distribution (jacobBin_XX.zip) includes:
import com.ms.com.*;
import com.ms.activeX.*;
public class DispatchTest
{
public static void main(String[] args)
{
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
Object xlo = xl.getObject();
try {
System.out.println("version="+xl.getProperty("Version"));
System.out.println("version="+Dispatch.get(xlo, "Version"));
xl.setProperty("Visible", new Variant(true));
Object workbooks = xl.getProperty("Workbooks").toDispatch();
Object workbook = Dispatch.get(workbooks,"Add").toDispatch();
Object sheet = Dispatch.get(workbook,"ActiveSheet").toDispatch();
Object a1 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
new Object[] {"A1"},
new int[1]).toDispatch();
Object a2 = Dispatch.invoke(sheet, "Range", Dispatch.Get,
new Object[] {"A2"},
new int[1]).toDispatch();
Dispatch.put(a1, "Value", "123.456");
Dispatch.put(a2, "Formula", "=A1*2");
System.out.println("a1 from excel:"+Dispatch.get(a1, "Value"));
System.out.println("a2 from excel:"+Dispatch.get(a2, "Value"));
Variant f = new Variant(false);
Dispatch.call(workbook, "Close", f);
} catch (Exception e) {
e.printStackTrace();
} finally {
xl.invoke("Quit", new Variant[] {});
}
}
}
jonkeyjohns
2003-12-19
打赏
举报
回复
我也认为用POI比较好
blue999star
2003-12-19
打赏
举报
回复
首先把结果放在 String[][]或什么什么里
再把String[][]写入 Excel
用 jxl包
http://www.andykhan.com/jexcelapi/download.html
或者自己写个方法。
我们有个项目用的是odbc数据源。把excle当成个数据库,把数据写入形成报表。
老土豆T
2003-12-19
打赏
举报
回复
最简单的
因为ms word和excel的文档都支持html文本格式,因此可以先用word或excel做好模版,另存为Web页,然后将该html改成jsp,将数据部分动态填入即可,不用很辛苦的调整格式
word页面只要在jsp头设置如下指令:
<%@page contentType="application/msword;charset=GBK" %>
excel如下:
<%@page contentType="application/vnd.ms-excel;charset=GBK" %>
——-——————————————————————————————
使用这种方式客户端必须安装有office软件,用户访问时将在ie中直接用word或excel打开该页面。
此方法优势是模板设计、调整方便,无需在服务器端使用复杂的POI或jxl技术,也无需在客户端使用ActiveX控件技术,更安全、方便,轻松实现较好的打印效果。
microsoft关于服务器端动态创建office文档的资料(asp示例):
http://support.microsoft.com/default.aspx?scid=KB;en-us;301044&
简单示例:
<%@ page contentType="application/msword;charset=GBK" %><%@ page import="java.sql.*" %><html><head><title>报表</title></head><body bgcolor="#FFFFFF"><center><h1>报表</h1></center><table border=1 cellspacing=0 cellpadding=0 bordercolor=#000000 align=center><tr><td>用户名</td><td>真实姓名</td><td>性别</td></tr><%Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url="jdbc:odbc:user";//连接user数据库Connection con=DriverManager.getConnection (url, "", ""); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("select * from user ");//查询user表while(rs.next()){%><tr><td><%= rs.getString("username") %></td><td><%= rs.getString("name") %></td><td><%= rs.getString("sex") %></td></tr><%}%><%rs.close();stmt.close();con.close();%> </table>
httruly
2003-12-19
打赏
举报
回复
推荐Apache开源项目POI
Python
生成
Excel
文件
的三种方法
Python
生成
Excel
文件
的三种方法 类库xlwt/xlrd 用于
生成
和读取比较老的
excel
文件
,比如xls格式,最大行数限制为65536行 文档地址:https://xlwt.readthedocs.io/en/latest/ 类库openpyxl 用于
生成
2010之后新...
使用PHP
生成
Excel
文件
并通过邮件发送
需求:每周一自动检测一个月...
生成
Excel
:使用简单的更改
文件
头(header)和使用table标签
生成
Excel
文件
会出现各种问题——打开的时候会有提醒,或者其他语言无法解析。使用php
Excel
插件(官方已不再维护),在php7...
SpringBoot Poi
生成
Excel
文件
时,下载的
文件
报错格式不正确需要修复
SpringBoot Poi
生成
Excel
文件
时,下载的
文件
报错格式不正确需要修复SpringBoot Poi
生成
Excel
文件
时,下载的
文件
用
Excel
打开报错格式不正确需要修复原因代码前端js后端javajar包依赖 SpringBoot Poi
生成
Excel
文件
时,...
QT--
生成
Excel
文件
文章目录一、 设置编码二、直接
生成
Excel
文件
1.添加开发工具2.添加命令行3.添加库
文件
三、运行程序四、导出
Excel
数据
文件
总结 一、 设置编码 一般程序按照16进制,8进制,2进制以及十进制来传输数据的,所以一般中文...
Easy
Excel
生成
Excel
文件
推荐博客 java
生成
Excel
文件
_Oliviajingxiang的博客-CSDN博客_java
生成
excel
文件
Web 开发
81,091
社区成员
341,719
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章