本文实例讲述了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 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"+dt.Columns[i].Caption.ToString()+"";
}
FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();
//逐行处理数据
foreach(DataRow row in myRow)
{
string OutIO=null;
//当前数据写入
for(i=0;i"+row[i].ToString()+"";
}
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 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"+dt.Columns[i].Caption.ToString()+"";
}
FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();
//逐行处理数据
foreach(DataRow row in myRow)
{
string OutIO=null;
//当前数据写入
for(i=0;i"+row[i].ToString()+"";
}
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#程序设计有所帮助。