前台jsp调用代码:
function outexe(){
queryForm.action = "<%=basepath%>/lpm/lpm-grpinfoExl.action";
queryForm.submit();
}
action代码:
/*
* 将数据导出到excel
*/
@Action(value="lpm-grpinfoExl")
public String lpmExl()throws Exception
{
LpmServiceInter ll = ServiceFactory.getLpmService();
List result=ll.query(lpmdto.getHql());
//写第一行标题行
String fileFolder = com.utils.FileUtil.createExlFile(getHttpRequest());//建文件夹
File objFile = new File(fileFolder + File.separator + "公司信息.csv");//建文件
String title = "公司编号,公司名称,公司状态,联系电话,注册时间";
com.utils.FileUtil.appendDataWriter(objFile, title + "\n");
//插入数据
StringBuffer data = new StringBuffer();
int rows = 0;
for(java.util.Iterator i=result.iterator();i.hasNext();){
GrpInfo g=(GrpInfo) i.next();
String s=null;
String s2=null;
data.append(" " + g.getGrpCode()).append(",");
data.append(" " + g.getGrpName()).append(",");
if(g.getStatus()==1){
s="有效";
}else{
s="已经撤销";
}
data.append(" " + s).append(",");
data.append(" " + g.getGrpTelNo()).append(",");
if(g.getRegtime()!=null){
s2=DateUtil.datetoStr2(g.getRegtime());
}else{
s2="";
}
data.append(" " +s2);
data.append("\n");
rows ++;
//当StringBuffer超过1千行数据时就先往文件插入那1千行数据并清空缓存数据
if(rows > 1000){
com.utils.FileUtil.appendDataWriter(objFile, data.toString());
data.delete(0, data.length());
}
}
com.utils.FileUtil.appendDataWriter(objFile, data.toString());
//输出到excel
com.utils.FileUtil.outExl(objFile, getHttpResponse());
return null;
}
自定义util工具类代码:
public static String createExlFile(HttpServletRequest request){
String parentPath = request.getSession().getServletContext().getRealPath("/exceltemplate/temp/" + (new java.text.SimpleDateFormat("yyyyMMdd")).format(new Date()));
//存tjfx目录
String fileFolder = parentPath + File.separator + "tjfx";
new File(fileFolder).mkdirs();
//删除tjfx里的临时文件
delete(new File(fileFolder));
return fileFolder;
}
//追加数据
public static void appendDataWriter(File objFile, String data) {
//if(!objFile.exists())
FileWriter objFileWriter = null;
BufferedWriter bfWriter = null;
try {
objFileWriter = new FileWriter(objFile, true);//true表示以追加的方式进行追加数据到文件
bfWriter = new BufferedWriter(objFileWriter);//将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入
bfWriter.write(data);//写数据行
//bfWriter.newLine();//写入一个行分隔符。
} catch (Exception e) {
//System.out.println("追加流发生错误:" + e.toString());
e.printStackTrace();
} finally {
try {
bfWriter.flush();
bfWriter.close();
objFileWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void outExl(File objFile, HttpServletResponse response)
throws Exception {
ServletOutputStream os = null;
InputStream in = null;
try {
long l = objFile.length(); //文件长度
in = new FileInputStream(objFile);
os = response.getOutputStream();//获取输出流
if (in != null) {
response.reset();
response.setCharacterEncoding("gbk");
response.setContentType("application/x-msdownload"); //
String title = objFile.getName();
title = title.substring(0,title.lastIndexOf("."));
String sf = "attachment; filename="
+ new String(title.getBytes(), "iso-8859-1") + ".csv"; //
response.setHeader("Content-Disposition", sf); // 以上输出文件元信息
response.setContentLength((int) l); //设置输入文件长度
byte[] b = new byte[2048];
int len = 0;
while ((len = in.read(b)) > 0) {
os.write(b, 0, len); //向浏览器输出
}
}
os.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
if(in != null)
in.close(); //关闭文件输入流
if(os != null)
os.close();
}
}
分享到:
相关推荐
在Java开发中,将数据导出到Excel是一种常见的需求,特别是在数据分析、报表生成或数据交换等场景下。Excel因其易用性和丰富的格式设置能力,成为处理结构化数据的理想选择。本篇文章将深入探讨如何利用Java实现这一...
本文将基于给定的文件信息,深入探讨C#中将数据导出到Excel的几种方法,包括在ASP.NET环境中导出Excel的具体步骤。 #### ASP.NET中导出Excel的方法概览 在ASP.NET中导出数据到Excel主要分为两种基本策略:一是将...
在IT行业中,将数据导出到Excel是一种常见的操作,尤其在数据分析、报表生成以及数据共享等领域。Excel作为Microsoft Office套件的一部分,因其强大的表格处理功能和丰富的数据分析工具,深受用户喜爱。下面,我们将...
本主题聚焦于如何利用C#将数据导出到Excel模板,并自定义字段,这是一个常见的需求,尤其是在数据分析、报告生成和数据共享的场景中。 在C#中,我们可以利用各种库来操作Excel,如EPPlus、NPOI或Microsoft.Office....
### C#将数据导出到Excel汇总:ASP.NET中的实现方式 #### 一、ASP.NET中导出Excel的方法概述 在ASP.NET应用中,导出数据到Excel是一种常见的需求,通常用于报表展示或数据下载等功能。根据给定的文档描述,我们...
利用不同的服务器控件将DataTable数据导出到Excel文件,包括: 利用DataGrid将数据导出到Excel文件; 利用HtmlTable将数据导出到Excel文件; 利用Literal将数据导出到Excel文件; 将本页内容导出到Excel文件。 适用于...
本话题主要聚焦于如何利用C#将数据导出到Excel文件,以实现数据的高效管理和共享。 首先,我们需要知道C#中创建Excel文件最常用的是使用第三方库,例如NPOI、EPPlus和闭源的Microsoft.Office.Interop.Excel。NPOI是...
在这篇文章中,我们将介绍如何使用 Delphi 高效率地将数据导出到 Excel 中。 Delphi 中的 Excel 操作 在 Delphi 中,我们可以使用多种方式来操作 Excel,例如使用 OLE 自动化、ADO、DBGridEh 等。其中,使用 OLE ...
本示例涉及的知识点主要集中在如何利用WPF技术来实现数据的导出功能,特别是将数据导出到Excel文件中。下面我们将详细探讨这一主题。 1. **WPF基础**: - WPF是基于XAML(Extensible Application Markup Language...
本示例涉及到的是使用VS2005进行数据的导出操作,目标是将数据导出到Excel表格中,这对于数据分析、报表生成和数据共享等场景非常实用。 首先,要实现这一功能,你需要了解以下关键知识点: 1. **Microsoft Office...
7. 数据导出到其他格式:除了将数据导出到Excel和Word中,我们还可以将数据导出到其他格式,例如CSV、TXT、PDF等等。在VB中,我们可以使用不同的对象和方法来实现数据导出到不同格式。 将VB中的数据导出到Excel和...
将datagrid数据导出到excel或者word 本文主要讲解如何将DataGridView控件中的数据导出到Excel或者Word文档中。 下面是相关的知识点: 1. ASP.NET 中的数据导出:在 ASP.NET 中,可以使用 Response 对象来控制...
C#大量数据导出到Excel,超过65536行时自动分页导出
总之,将数据导出到Excel是软件开发中的常见任务,通过使用Excel Interop库,开发者可以创建自定义报告和导出功能。然而,为了提高性能和降低依赖性,可以考虑使用替代方案,如CSV导出或专门的Excel处理库。在编写这...
在MATLAB Simulink环境中,将示波器数据导出到Excel表格是一项常见的需求,这有助于数据的存储、分析和进一步处理。以下是一份详细的步骤教程: 首先,我们需要准备一个Simulink模型,在模型中添加必要的组件。核心...
如果 Excel 文件不存在,可以使用 BCP 命令将数据导出到类 Excel 文件中。下面是一个基本的示例: ```sql EXEC master..xp_cmdshell 'bcp 数据库名.dbo.表名 out "c:\test.xls" /c -/S"服务器名" /U"用户名" -P...
在"DatasToExcel"这个项目中,很可能是使用了上述的一种或多种方法来实现数据导出。具体步骤可能包括以下几步: - 首先,连接到数据源,这可能是数据库、CSV文件或其他数据存储。 - 然后,查询或提取需要的数据。 -...