栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

本文实例讲述了C#实现DataSet内数据转化为Excel和Word文件的通用类。分享给大家供大家参考,具体如下:

前不久因为项目的需要写的一个C#把DataSet内数据转化为Excel和Word文件的通用类,这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。 最后请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Interop.Word;
using Microsoft.Office.Core;
using OWC=Microsoft.Office.Interop;
using System.Reflection;
using System.Text;
namespace CaOnLine.ZWDB.DFObject
{
 /// 
 /// ExportFiles 的摘要说明。
 /// 作用:把DataSet数据集内数据转化为Excel、Word文件
 /// 描述:这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后
 ///    生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。
 /// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
 /// 
 public class ExportFiles
 {
 /// 
 ///
 /// 
 ///
 #region //构造函数
 public ExportFiles()
 {
  //
  // TODO: 在此处添加构造函数逻辑
  //
 }
 #endregion
 /// 
 /// 调用Excel.dll导出Excel文件
 /// 
 /// 
 ///
 #region // 调用Excel.dll导出Excel文件
     /// 
     ///
     /// 
     /// DataSet数据庥
     /// 登录用户(如session["username"].Tostring())可为null或空
     /// 添加一个报表标题
     /// 指定文件在服务器上的存放地址(如:Server.MapPath("."))可为null或空
     ///
     /// 为什么在这里设置个filepath?
     /// 原因如下:filepath接收的内容是Server.MapPath(".")这个参数值,这个值在这本类中对
     /// System.Web.HttpServerUtility HServer=new System.Web.HttpServerUtility()的引用出错,因为没有继承Page类
     /// 所以只能以传值的形式调用了,你有好的办法可以修改,那就再好不过了!
 public void DataSetToExcel(DataSet ds,string Duser,string titlename,string filepath)
 {
  //Microsoft.Office.Interop.Owc11() appowc=new Microsoft.Office.Interop.Owc11();
  OWC.Owc11.SpreadsheetClass xlsheet=new Microsoft.Office.Interop.Owc11.SpreadsheetClass();
  #region //屏蔽内容
  ///本来想用下面的这个办法实现的,可在IIS中必须设置相关的权限
  ///所以就放弃了,把代码设置为屏蔽内容,供学习参考!
  ///
//  Microsoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
//
//  if(app==null)
//  {
// throw new Exception("系统调用错误(Excel.dll)");
//  }
//  app.Application.Workbooks.Add(true);
//  WorkbookClass oBook=new WorkbookClass();
//      WorksheetClass oSheet=new WorksheetClass();
//
//  //定义表对象与行对象,同时用DataSet对其值进行初始化
//  System.Data.DataTable dt=ds.Tables[0];
//   oSheet.get_Range(app.Cells[1,1],app.Cells[10,15]).HorizontalAlignment=OWC.Owc11.XlHAlign.xlHAlignCenter;
//  DataRow[] myRow=dt.Select();
//  int i=0;
//  int cl=dt.Columns.Count;
//  //取得数据表各列标题
//  for(i=0;i
 /// 导出Excel文件类
 /// 
 /// 
 /// 
 ///
 #region //导出Excel文件类
 public void DataSetToExcel(DataSet ds,string FileName)
 {
  try
  {
  //Web页面定义
  //System.Web.UI.Page mypage=new System.Web.UI.Page();
  HttpResponse resp;
  resp=HttpContext.Current.Response;
  resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
  resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".xls");
  resp.ContentType="application/ms-excel";
  //变量定义
  string colHeaders=null;
  string Is_item=null;
  //显示格式定义////////////////
  //文件流操作定义
  // FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write);
  //StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312"));
  StringWriter sfw=new StringWriter();
  //定义表对象与行对象,同时用DataSet对其值进行初始化
  System.Data.DataTable dt=ds.Tables[0];
  DataRow[] myRow=dt.Select();
  int i=0;
  int cl=dt.Columns.Count;
  //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
  for(i=0;i
 /// 数据集转换,即把DataSet转换为Excel对象
 /// 
 /// 
 /// 
 /// 
 ///
 #region   //运用html+css生成Excel
 public void DataSetToExcel(DataSet ds,String FileName,string titlename)
 {
  string ExportFileName=null;
  if(FileName==null || FileName=="")
  ExportFileName="DFSOFT";
  else
  ExportFileName=FileName;
  if(titlename=="" || titlename==null)
  titlename="添加标题处(高级报表)";
  //定义表对象与行对象,同时用DataSet对其值进行初始化
  System.Data.DataTable dt=ds.Tables[0];
  DataRow[] myRow=dt.Select();
  int i=0;
  int cl=dt.Columns.Count;
  //Web页面定义
  HttpResponse resp;
  resp=HttpContext.Current.Response;
  resp.Clear();
  resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8");
  resp.AppendHeader("Content-disposition","attachment;filename="+ExportFileName+".xls");
  resp.ContentType="application/vnd.ms-excel";
  string BeginTab="";
  string EndTab="
"; string FileIO=null; string MainIO=null; string TitleTab=""+titlename+""+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日    "; string BeginTr=""; string EndTr=""; for(i=0;i"; } FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString(); //逐行处理数据 foreach(DataRow row in myRow) { string OutIO=null; //当前数据写入 for(i=0;i"; } MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString(); } FileIO="
"+TitleTab.ToString()+""+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"
"; resp.Write(FileIO.ToString()); resp.End(); } #endregion /// /// 导出Word文件类 /// /// /// /// #region //导出Word文件类 public void DataSetToWord(DataSet ds,string FileName) { try { //Web页面定义 //System.Web.UI.Page mypage=new System.Web.UI.Page(); HttpResponse resp; resp=HttpContext.Current.Response; resp.Clear(); resp.Buffer=true; resp.Charset="utf-8"; resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8"); resp.AppendHeader("Content-disposition","attachment;filename="+FileName+".doc"); resp.ContentType="application/ms-word"; //变量定义 string colHeaders=null; string Is_item=null; //显示格式定义//////////////// //文件流操作定义 // FileStream fs=new FileStream(FileName,FileMode.Create,FileAccess.Write); //StreamWriter sw=new StreamWriter(fs,System.Text.Encoding.GetEncoding("GB2312")); StringWriter sfw=new StringWriter(); //定义表对象与行对象,同时用DataSet对其值进行初始化 System.Data.DataTable dt=ds.Tables[0]; DataRow[] myRow=dt.Select(); int i=0; int cl=dt.Columns.Count; //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符 for(i=0;i /// 数据集转换,即把DataSet转换为Word对象 /// /// /// /// #region // 运行html+css生成Word文件 public void DataSetToWord(DataSet ds,string FileName,string titlename) { //调用Office //备注:速度太慢放弃应用此方法 //OWC.Word.Application oWord=new OWC.Word.ApplicationClass(); //OWC.Word._document oDoc=new OWC.Word.documentClass(); string ExportFileName=null; if(FileName==null || FileName=="") ExportFileName="DFSOFT"; else ExportFileName=FileName; if(titlename=="" || titlename==null) titlename="添加标题处(高级报表)"; //定义表对象与行对象,同时用DataSet对其值进行初始化 System.Data.DataTable dt=ds.Tables[0]; DataRow[] myRow=dt.Select(); int i=0; int cl=dt.Columns.Count; #region // string FileTitle="
报表测试
"+"n"; // string EndFile="
"; // //Web页面定义 HttpResponse resp; resp=HttpContext.Current.Response; resp.Clear(); resp.ContentEncoding=System.Text.Encoding.GetEncoding("utf-8"); resp.AppendHeader("Content-disposition","attachment;filename="+ExportFileName+".doc"); resp.ContentType="application/vnd.ms-word"; // System.IO.StringWriter oSW=new StringWriter(); // System.Web.UI.HtmlTextWriter oHW=new System.Web.UI.HtmlTextWriter(oSW); // System.Web.UI.WebControls.DataGrid oDG=new System.Web.UI.WebControls.DataGrid(); // oDG.DataSource=ds.Tables[0]; // oDG.DataBind(); // oDG.RenderControl(oHW); // resp.Write(FileTitle.ToString()+oSW.ToString()+EndFile.ToString()); // resp.End(); #endregion string BeginTab=""; string EndTab="
"; string FileIO=null; string MainIO=null; string TitleTab=""+titlename+""+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日    "; string BeginTr=""; string EndTr=""; for(i=0;i"; } FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString(); //逐行处理数据 foreach(DataRow row in myRow) { string OutIO=null; //当前数据写入 for(i=0;i"; } MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString(); } FileIO="
"+TitleTab.ToString()+""+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"
"; resp.Write(FileIO.ToString()); resp.End(); } #endregion } }

更多关于C#相关内容感兴趣的读者可查看本站专题:《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#面向对象程序设计入门教程》及《C#程序设计之线程使用技巧总结》

希望本文所述对大家C#程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/124146.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号