asp.net中将数据导出为dbf文件
2007-11-07 12:07
357 查看
以前一个项目要求将数据导出为Execl和dbf,导出为Excel的代码比较多,我将自己写的导出为dbf的代码贴出,希望给大家有所帮助,思路为提前建好一个空的dbf文件,导出时将该模板复制到工作目录,然后将数据插入该dbf中,当用户下载完毕后将其删除。
1.导出助手类
using System;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Globalization;
using System.Collections;
namespace Web.Controls.Export
...{
/**//// <summary>
/// DbfHelper 导出助手类。
/// </summary>
public class DbfHelper
...{
string _templetFile;//DBF模板文件
string _fileName;//目标临时文件
string _serverpath;//
string _fields;
string _fileprefix;
DataTable _dataSource;
public DbfHelper()
...{
_serverpath=HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath)+"/";
}
public string TempletFile
...{
set ...{ _templetFile = value; }
get ...{ return _templetFile; }
}
public string FilePrefix
...{
set ...{ _fileprefix = value; }
get ...{ return _fileprefix; }
}
public string Fields
...{
set ...{ _fields = value; }
get ...{ return _fields; }
}
public DataTable DataSource
...{
set ...{ _dataSource = value; }
get ...{ return _dataSource; }
}
public void Export()
...{
HttpResponse response = HttpContext.Current.Response;
CreateData();
response.Charset = "GB2312";
response.ContentEncoding = Encoding.GetEncoding("GB2312");
response.ContentType = "APPLICATION/OCTET-STREAM";
response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(_fileName));
response.WriteFile(_fileName);
response.Flush();
File.Delete(_fileName);
response.End();
}
private void CreateData()
...{
string tempfile=GetRandomFileName();
_fileName=_serverpath+@"Temp"+tempfile+".dbf";
File.Copy(_serverpath+_templetFile,_fileName,true);
string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+_serverpath+@"Temp"+";Extended Properties=dBASE 5.0";
string sql="";
if(_fields!=null && _fields!=string.Empty)
sql="Select "+_fields+" From [" + tempfile+"]" ;
else
sql="Select * From ["+ tempfile +"]";
OleDbDataAdapter adpt=new OleDbDataAdapter(sql,strConn);
OleDbCommandBuilder bd =new OleDbCommandBuilder (adpt);
bd.QuotePrefix="[";
bd.QuoteSuffix="]";
DataSet mySet=new DataSet();
adpt.Fill (mySet,tempfile);
MoveBatch(_dataSource,mySet.Tables[0]);//批量导出数据
adpt.Update(mySet,tempfile);
}
/**//**//**//// <summary>
/// 得到一个随意的文件名
/// </summary>
/// <returns></returns>
private string GetRandomFileName()
...{
Random rnd = new Random((int) (DateTime.Now.Ticks));
string s = rnd.Next(999).ToString();
s= FilePrefix + s;
return s;
}
protected virtual void MoveBatch(DataTable src_dt,DataTable dst_dt)
...{
foreach(DataRow dr in src_dt.Rows)
...{
dst_dt.ImportRow(dr);
}
}
}
}
调用
DbfHelper export=new DbfHelper;
export.TempletFile="DATAAIR.DBF";
export.FilePrefix="ASP";
export.DataSource=dt;
export.Fields="[DATE],CYR,DM,SS,HBH,JX,HBXZ,HX,HX0,HXFL,HD,HDFL,ZDYZ,ZDZW,PEYZ,PEZW,KGYZ,KGZW,IO,JCN,QJSJ,CR,ET,YE,CRWH,ETWH,YEWH,XL,YJ,HW,PBM,XG,BC";
export.Export();
导出是如果需要将数据做一些处理怎么办?
新建个类继承自DbfHelper,重写MoveBatch方法,在该方法中进行数据转换处理。
1.导出助手类
using System;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Globalization;
using System.Collections;
namespace Web.Controls.Export
...{
/**//// <summary>
/// DbfHelper 导出助手类。
/// </summary>
public class DbfHelper
...{
string _templetFile;//DBF模板文件
string _fileName;//目标临时文件
string _serverpath;//
string _fields;
string _fileprefix;
DataTable _dataSource;
public DbfHelper()
...{
_serverpath=HttpContext.Current.Server.MapPath(HttpContext.Current.Request.ApplicationPath)+"/";
}
public string TempletFile
...{
set ...{ _templetFile = value; }
get ...{ return _templetFile; }
}
public string FilePrefix
...{
set ...{ _fileprefix = value; }
get ...{ return _fileprefix; }
}
public string Fields
...{
set ...{ _fields = value; }
get ...{ return _fields; }
}
public DataTable DataSource
...{
set ...{ _dataSource = value; }
get ...{ return _dataSource; }
}
public void Export()
...{
HttpResponse response = HttpContext.Current.Response;
CreateData();
response.Charset = "GB2312";
response.ContentEncoding = Encoding.GetEncoding("GB2312");
response.ContentType = "APPLICATION/OCTET-STREAM";
response.AppendHeader("Content-Disposition", "attachment;filename=" +
HttpUtility.UrlEncode(_fileName));
response.WriteFile(_fileName);
response.Flush();
File.Delete(_fileName);
response.End();
}
private void CreateData()
...{
string tempfile=GetRandomFileName();
_fileName=_serverpath+@"Temp"+tempfile+".dbf";
File.Copy(_serverpath+_templetFile,_fileName,true);
string strConn=@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+_serverpath+@"Temp"+";Extended Properties=dBASE 5.0";
string sql="";
if(_fields!=null && _fields!=string.Empty)
sql="Select "+_fields+" From [" + tempfile+"]" ;
else
sql="Select * From ["+ tempfile +"]";
OleDbDataAdapter adpt=new OleDbDataAdapter(sql,strConn);
OleDbCommandBuilder bd =new OleDbCommandBuilder (adpt);
bd.QuotePrefix="[";
bd.QuoteSuffix="]";
DataSet mySet=new DataSet();
adpt.Fill (mySet,tempfile);
MoveBatch(_dataSource,mySet.Tables[0]);//批量导出数据
adpt.Update(mySet,tempfile);
}
/**//**//**//// <summary>
/// 得到一个随意的文件名
/// </summary>
/// <returns></returns>
private string GetRandomFileName()
...{
Random rnd = new Random((int) (DateTime.Now.Ticks));
string s = rnd.Next(999).ToString();
s= FilePrefix + s;
return s;
}
protected virtual void MoveBatch(DataTable src_dt,DataTable dst_dt)
...{
foreach(DataRow dr in src_dt.Rows)
...{
dst_dt.ImportRow(dr);
}
}
}
}
调用
DbfHelper export=new DbfHelper;
export.TempletFile="DATAAIR.DBF";
export.FilePrefix="ASP";
export.DataSource=dt;
export.Fields="[DATE],CYR,DM,SS,HBH,JX,HBXZ,HX,HX0,HXFL,HD,HDFL,ZDYZ,ZDZW,PEYZ,PEZW,KGYZ,KGZW,IO,JCN,QJSJ,CR,ET,YE,CRWH,ETWH,YEWH,XL,YJ,HW,PBM,XG,BC";
export.Export();
导出是如果需要将数据做一些处理怎么办?
新建个类继承自DbfHelper,重写MoveBatch方法,在该方法中进行数据转换处理。
相关文章推荐
- asp.net中将GridView数据导出成Excel文件(下)
- asp.net中将DataGrid数据导出到excel或word文件中
- asp.net中将DataGrid数据导出到excel或word文件中
- asp.net中将DataGrid数据导出到excel或word文件中
- asp.net中将DataGrid的内容导出为excel文件
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- asp.net中数据导出(Word,Excel)以及文件下载
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- ASP.NET 将 DataView 数据导出到服务器上生成Excel文件
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- [原创]大量数据导出为Excel文件的问题解决(C#,ASP.NET)
- ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- [导入]ASP.NET 2.0中将 GridView 导出到 Excel 文件中
- Asp.net 2.0 GridView数据导出Excel文件(示例代码下载)
- Asp.Net MVC 使用FileResult导出Excel数据文件
- 在ASP.NET中将数据库中数据导出为Excel表格
- asp.net中将gridview数据导出成Excel问题解决
- ASP.NET中将导出的数据以UTF-8编码方式进行存储
- ASP.NET将GridView中的数据导出到Excel文件中(转载)