ASP.NET导出bdf文件
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);//此处要修改为:dst_dt.Rows.Add(dr.ItemArray);
}
}
}
}
2.调用
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();
3.导出数据需要做处理可以用继承的方法。
新建个类继承自DbfHelper,重写MoveBatch方法,在该方法中进行数据转换处理。
ASP.NET导出bdf文件的更多相关文章
- asp mvc 导出txt 文件泛型方法
asp mvc 导出txt 文件泛型方法分享: public static void ExportFile<T>(T obj) { StringBuilder str = new Stri ...
- asp.net 导出excel文件
之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...
- ASP.NET导出Excel文件
第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...
- ASP.NETCore -----导出Excel文件并下载
本事例分为nopi(安装DotNetCore.NPOI)下载和EPPlus(EPPlus.Core.dll)下载,其中npoi下载演示的是根据执行的模板进行数据下载 npoi帮助类NpoiExcelU ...
- ASP.NET 导出EXCEL文件处理多对应排列的
这次项目遇到了一个导出excel需要对应排列的问题.本来在做这个项目之前都基本没做过excel导出的菜鸡,这次强行做还是有些忐忑的,加上那个表的结构比较奇特. 废话不多说,先介绍表结构吧 是数据 ...
- ASP.NET 导出excel文件出现乱码的解决办法
string html =TABLE ;//<table>标签,可以是多张表string modified = Regex.Replace(html, "<table &g ...
- asp.net(C#) Excel导出类 导出.xls文件
---恢复内容开始--- using Microsoft.Office.Interop.Excel; 针对office 2003需添加引用Microsoft Excel 11.0 Obje ...
- 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法
-----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...
- asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台
分享: 腾讯微博 新浪微博 搜狐微博 网易微博 腾讯朋友 百度贴吧 豆瓣 QQ好友 人人网 作者:王春天 原文地址:http://www.cnblogs.com/spring_ ...
随机推荐
- 概率论 --- Uva 11181 Probability|Given
Uva 11181 Probability|Given Problem's Link: http://acm.hust.edu.cn/vjudge/problem/viewProblem.acti ...
- Winform开发框架的业务对象统一调用方式
在这个纷繁的社会里面,统一性的特点能够带来很多高效的产出.牢固的记忆,这种特征无论对于企业.个人的开发工作,知识的传承都有着非常重要的作用,Winfrom框架本身就是基于这个理念而生,从统一的数据库设 ...
- wpf 自定义消息框
相信很多人用过MessageBox.show(),是不是觉得这个消息框有点丑呢,反正我是觉得有点丑的,所以我自己重写了一个.先不说,上两幅图对比先: 当然,也不是很好看,不过比原有的好多了. 不多说了 ...
- 创建WCF服务自我寄宿
WCF服务的寄宿方式 WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有: IIS服务.Windows服务.Winform程序.控制台程序中进行寄宿,从而实现WCF服务的运行,为 ...
- 初学者对WAMP服务器的设置
服务器设置 在wamp/bin/apache/Apache###/conf/httpd.conf文件中设置 根文件夹 修改documentroot和directory两项 保存后重启服务 404返回值 ...
- PHP学习笔记:万能随机字符串生成函数(已经封装好)
做验证码用到的,然后就把这个函数封装起来,使用时候要设置2个参数: $str设置里要被采集的字符串,比如: $str='efasfgzsrhftjxjxjhsrth'; 则在函数里面生成的字符串就回从 ...
- django 中间件
django处理一个Request的过程是首先通过django 中间件,然后再通过默认的URL方式进行的.所以说我们要做的就是在django 中间件这个地方把所有Request拦截住,用我们自己的方式 ...
- IE浏览器中ajax使用缓存数据的问题
今天做了一个小功能:点击鼠标实时更新系统时间,采用ajax,过程很顺利,没遇到啥差错,谷歌,火狐,欧鹏一律通过,怀着忐忑的心情点开了IE8,果然,IE要对得起前端杀手的称号:更新不了时间. 查了一下这 ...
- swift学习笔记之-错误处理
//错误处理 import UIKit /*错误处理(Error Handling):响应错误以及从错误中恢复的过程 在 Swift 中,错误用符合ErrorType协议的类型的值来表示.这个空协议表 ...
- OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)
// 先分别初始化数组.字典和集合,然后分别用for循环.NSEnumerator枚举器和forin循环这三个方法来实现遍历 NSArray *array = @[@"yinhao" ...