C#实现实现DataSet内数据转化为内数据转化为Excel和和Word文件的通用类完整实例文件的通用类完整实例
主要介绍了C#实现DataSet内数据转化为Excel和Word文件的通用类,涉及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
{
/// <summary>
/// ExportFiles 的摘要说明。
/// 作用:把DataSet数据集内数据转化为Excel、Word文件
/// 描述:这些关于Excel、Word的导出方法,基本可以实现日常须要,其中有些方法可以把数据导出后
/// 生成Xml格式,再导入数据库!有些屏蔽内容没有去掉,保留下来方便学习参考用之。
/// 备注:请引用Office相应COM组件,导出Excel对象的一个方法要调用其中的一些方法和属性。
/// </summary>
public class ExportFiles
{
/// <summary>
///
/// </summary>
///
#region //构造函数
public ExportFiles()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
#endregion
/// <summary>
/// 调用Excel.dll导出Excel文件
/// </summary>
/// <param name="ds"></param>
///
#region // 调用Excel.dll导出Excel文件
/// <summary>
///
/// </summary>
/// <param name="ds">DataSet数据庥</param>
/// <param name="Duser">登录用户(如session["username"].Tostring())可为null或空</param>
/// <param name="titlename">添加一个报表标题</param>
/// <param name="filepath">指定文件在服务器上的存放地址(如:Server.MapPath("."))可为null或空</param>
///
/// 为什么在这里设置个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<cl;i++)
// {
// app.Cells[1,i+1]=dt.Columns[i].Caption.ToString();
// //app.Cells.AddComment(dt.Columns[i].Caption.ToString());
// //oSheet.Cells.AddComment(dt.Columns[i].Caption.ToString());
// //app.Cells=dt.Columns[i].Caption.ToString();
// //oSheet.get_Range(app.Cells,app.Cells).HorizontalAlignment=
// //app.Cells.AddComment=dt.Columns[i].ToString();
// //oSheet.get_Range(app.Cells,app.Cells).HorizontalAlignment=
// }
#endregion
//定义表对象与行对象,同时用DataSet对其值进行初始化
System.Data.DataTable dt=ds.Tables[0];
DataRow[] myRow=dt.Select();
int i=0;
int col=1;
int colday=col+1;
int colsecond=colday+1;
int colnumber=colsecond+1;
int cl=dt.Columns.Count;
string userfile=null;
//合并单元格
xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).set_MergeCells(true);
//添加标题名称
if(titlename=="" || titlename==null)
xlsheet.ActiveSheet.Cells[col,col]="添加标题处(高级报表)";
else
xlsheet.ActiveSheet.Cells[col,col]=titlename.Trim();
//判断传值user是否为空
if(Duser=="" || Duser==null)
userfile="DFSOFT";
else
userfile=Duser;
//设置标题大小
xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).Font.set_Size(13);
//加粗标题