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文件的更多相关文章

  1. asp mvc 导出txt 文件泛型方法

    asp mvc 导出txt 文件泛型方法分享: public static void ExportFile<T>(T obj) { StringBuilder str = new Stri ...

  2. asp.net 导出excel文件

    之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...

  3. ASP.NET导出Excel文件

    第一种最常见,并且最简单的方式,直接把GridView导出,导出格式为文本表格形式. protected void btnSaveExcel_Click(object sender, EventArg ...

  4. ASP.NETCore -----导出Excel文件并下载

    本事例分为nopi(安装DotNetCore.NPOI)下载和EPPlus(EPPlus.Core.dll)下载,其中npoi下载演示的是根据执行的模板进行数据下载 npoi帮助类NpoiExcelU ...

  5. ASP.NET 导出EXCEL文件处理多对应排列的

    这次项目遇到了一个导出excel需要对应排列的问题.本来在做这个项目之前都基本没做过excel导出的菜鸡,这次强行做还是有些忐忑的,加上那个表的结构比较奇特.    废话不多说,先介绍表结构吧 是数据 ...

  6. ASP.NET 导出excel文件出现乱码的解决办法

    string html =TABLE ;//<table>标签,可以是多张表string modified = Regex.Replace(html, "<table &g ...

  7. asp.net(C#) Excel导出类 导出.xls文件

    ---恢复内容开始--- using Microsoft.Office.Interop.Excel; 针对office 2003需添加引用Microsoft   Excel   11.0   Obje ...

  8. 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格式不一致的解决办法

    -----转载:http://blog.csdn.net/sgear/article/details/7663502 关于asp.net C# 导出Excel文件 打开Excel文件格式与扩展名指定格 ...

  9. asp.net导出excel-一行代码实现excel、xml、pdf、word、html、csv等7种格式文件导出功能而且美观-SNF快速开发平台

    分享: 腾讯微博  新浪微博   搜狐微博   网易微博  腾讯朋友  百度贴吧  豆瓣   QQ好友  人人网 作者:王春天  原文地址:http://www.cnblogs.com/spring_ ...

随机推荐

  1. Gradle学习系列之一——Gradle快速入门

    这是一个关于Gradle的学习系列,其中包含以下文章: Gradle快速入门 创建Task的多种方法 读懂Gradle语法 增量式构建 自定义Property 使用java Plugin 依赖管理 构 ...

  2. 团队项目2.0软件改进分析MathAPP

    软件改进分析 在此基础上,进行软件的改进. 首先,我们把这个软件理解成一个投入市场的.帮助小朋友进行算术运算练习的APP. 从质量保证的角度,有哪些需要改进的BUG? 从用户的角度(把自己当成小学生或 ...

  3. 小白学Linux(三)--文件系统基本结构

    Linux文件系统是一个倒立的单根树状结构,文件名称严格区分大小写(windows系统则是对大小写不明感的).路径用“/”分隔,跟windows的“\”不同. 这里我画了一张一般Linux系统的正常目 ...

  4. spring详解(1)

    1.  什么是spring? Spring 是一个开源框架,是为了解决企业应用程序开发复杂性而创建的.框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发 ...

  5. POJ 1836 Alignment 最长递增子序列(LIS)的变形

    大致题意:给出一队士兵的身高,一开始不是按身高排序的.要求最少的人出列,使原序列的士兵的身高先递增后递减. 求递增和递减不难想到递增子序列,要求最少的人出列,也就是原队列的人要最多. 1 2 3 4 ...

  6. python爬虫——爬取NUS-WIDE数据库图片

    实验室需要NUS-WIDE数据库中的原图,数据集的地址为http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm   由于这个数据只给了每个图片的URL,所以需 ...

  7. js文件被浏览器缓存的思考

        我们的用户量大,修改js文件后,用户反馈登录出现问题.实际上刷新一下就没事了.就是因为用户的浏览器使用的还是本地缓存的js代码.   强制刷新一般就会重新去服务器获取新的js代码.但不能让用户 ...

  8. JVM的ClassLoader过程分析

    本文来自网络:深入分析Java ClassLoader原理 http://my.oschina.net/zhengjian/blog/133836 一. JVM的ClassLoader过程以及装载原理 ...

  9. [js开源组件开发]js手机联动选择日期 开源git

    js手机联动选择日期 这里在前面的<js手机联动选择地区>的基础上,改造数据源之后形成的一个日期的选择器,当然你可以使用之前的PC上模式的<日期控件>,它同时也支持手机端,ht ...

  10. Atitit.json xml 序列化循环引用解决方案json

    Atitit.json xml 序列化循环引用解决方案json 1. 循环引用1 2. 序列化循环引用解决方法1 2.1. 自定义序列化器1 2.2. 排除策略1 2.3. 设置序列化层次,一般3级别 ...