本文实例讲述了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

// {

// 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);

//加粗标题

xlsheet.get_Range(xlsheet.Cells[col,col],xlsheet.Cells[col,cl]).Font.set_Bold(true);

xlsheet.get_Range(xlsheet.Cells[colsecond,col],xlsheet.Cells[colsecond,cl]).Font.set_Bold(true);

//设置标题水平居中

xlsheet.get_Range(xlsheet.Cells,xlsheet.Cells).set_HorizontalAlignment(OWC.Owc11.XlHAlign.xlHAlignCenter);

//设置单元格宽度

//xlsheet.get_Range(xlsheet.Cells,xlsheet.Cells).set_ColumnWidth(9);

xlsheet.get_Range(xlsheet.Cells[colday,col],xlsheet.Cells[colday,cl]).set_MergeCells(true);

xlsheet.ActiveSheet.Cells[colday,col]="日期:"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日 ";

xlsheet.get_Range(xlsheet.Cells[colday,col],xlsheet.Cells[colday,cl]).set_HorizontalAlignment(OWC.Owc11.XlHAlign.xlHAlignRight);

//取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符

for(i=0;i

{

xlsheet.ActiveSheet.Cells[colsecond,i+1]=dt.Columns[i].Caption.ToString();

}

//逐行处理数据

foreach(DataRow row in myRow)

{

//当前数据写入

for(i=0;i

{

xlsheet.ActiveSheet.Cells[colnumber,i+1]=row[i].ToString().Trim();

}

colnumber++;

}

//设置边框线

xlsheet.get_Range(xlsheet.Cells[colsecond,col],xlsheet.Cells[colnumber-1,cl]).Borders.set_LineStyle(OWC.Owc11.XlLineStyle.xlContinuous);

try

{

//xlsheet.get_Range(xlsheet.Cells[2,1],xlsheet.Cells[8,15]).set_NumberFormat("¥#,##0.00");

// System.Web.HttpServerUtility HServer=new System.Web.HttpServerUtility();

//HServer.MapPath(".")+"//testowc.xls";

xlsheet.Export(filepath+"//exportfiles//~$"+userfile+".xls",OWC.Owc11.SheetExportActionEnum.ssExportActionNone,OWC.Owc11.SheetExportFormat.ssExportXMLSpreadsheet);

}

catch(Exception e)

{

throw new Exception("系统调用错误或有打开的Excel文件!"+e);

}

//Web页面定义

HttpResponse resp;

resp=HttpContext.Current.Response;

resp.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");

resp.AppendHeader("Content-disposition","attachment;filename="+userfile+".xls");

resp.ContentType="application/ms-excel";

string path=filepath+"//exportfiles//~$"+userfile+".xls";

System.IO.FileInfo file = new FileInfo(path);

resp.Clear();

resp.AddHeader("content-length",file.Length.ToString());

resp.WriteFile(file.FullName);

resp.End();

}

#endregion

///

/// 导出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

{

//if(i==(cl-1)) //最后一列,加\n

// colHeaders+=dt.Columns[i].Caption.ToString();

//else

colHeaders+=dt.Columns[i].Caption.ToString()+"\t";

}

sfw.WriteLine(colHeaders);

//sw.WriteLine(colHeaders);

//逐行处理数据

foreach(DataRow row in myRow)

{

//当前数据写入

for(i=0;i

{

//if(i==(cl-1))

// Is_item+=row[i].ToString()+"\n";

//else

Is_item+=row[i].ToString()+"\t";

}

sfw.WriteLine(Is_item);

//sw.WriteLine(Is_item);

Is_item=null;

}

resp.Write(sfw);

//resp.Clear();

resp.End();

}

catch(Exception e)

{

throw e;

}

}

#endregion

///

/// 数据集转换,即把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+="

"+dt.Columns[i].Caption.ToString()+"";

}

FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();

//逐行处理数据

foreach(DataRow row in myRow)

{

string OutIO=null;

//当前数据写入

for(i=0;i

{

OutIO+="

"+row[i].ToString()+"";

}

MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();

}

FileIO="

";

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

{

//if(i==(cl-1)) //最后一列,加\n

// colHeaders+=dt.Columns[i].Caption.ToString();

//else

colHeaders+=dt.Columns[i].Caption.ToString()+"\t";

}

sfw.WriteLine(colHeaders);

//sw.WriteLine(colHeaders);

//逐行处理数据

foreach(DataRow row in myRow)

{

//当前数据写入

for(i=0;i

{

//if(i==(cl-1))

// Is_item+=row[i].ToString()+"\n";

//else

Is_item+=row[i].ToString()+"\t";

}

sfw.WriteLine(Is_item);

//sw.WriteLine(Is_item);

Is_item=null;

}

resp.Write(sfw);

//resp.Clear();

resp.End();

}

catch(Exception e)

{

throw e;

}

}

#endregion

///

/// 数据集转换,即把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+="

"+dt.Columns[i].Caption.ToString()+"";

}

FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();

//逐行处理数据

foreach(DataRow row in myRow)

{

string OutIO=null;

//当前数据写入

for(i=0;i

{

OutIO+="

"+row[i].ToString()+"";

}

MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();

}

FileIO="

";

resp.Write(FileIO.ToString());

resp.End();

}

#endregion

}

}

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

用c#转换word或excel文档为html文件,C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例...相关推荐

  1. 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...

    ​文/HALI就职于汽车行业战略部门 专注汽车市场信息情报收集和分析 因为工作需要,每月周期性的更新数据和撰写PPT 报告成为繁重的劳动.结果是很多时间花费在数据处理上,真正的分析工作,往往只能草草收 ...

  2. Python实现谷歌翻译爬虫,翻译PDF,翻译Excel,支持excel文档打开翻译,支持xlsx,xlsm等格式。

    前言: 这两个Python脚本是我在实习期间完成的,具体来自于小组主管的两个小需求.做完之后感觉还是挺有收获的. 实现谷歌翻译,首先需要将我们写的Python脚本还有需要翻译的文件放到谷歌浏览器的安装 ...

  3. 计算机excel还原,3种方法找回电脑上已删除的Excel文档

    Microsoft Office Excel是微软(Microsoft)为Windows及macOS所设计的试算表软件.它的计算.绘图工具.枢纽分析表和一个称作VBA(Visual Basic for ...

  4. 计算机自定义大小修改数值,如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改...

    如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改 腾讯视频/爱奇艺/优酷/外卖 充值4折起 当我们在使用电脑的时候,如果想要处理数据的话,一般都会用到excel软件,在excel中,如 ...

  5. 如何打开html的文档结构图,如何在Word中设置文档结构图

    在使用Word文档编辑大量文字内容时,有涉及到很多章节,有时候页数太多,很难操作前后快速链接起来,为了让整个文案的脉络承上启下,那如何在Word中设置文档结构图? 接下来小编跟大家介绍下如何设置wor ...

  6. 同时删除多个 Excel 文档前几个工作表

    概要:一个 Excel 文档经常会包含多个工作表,也就是常说的 Sheet,有时候可能文档当中前面几个工作表示我们不想要的,所以我们就需要对这些工作表进行删除.但是怎么样才能够做到同时删除多个 Exc ...

  7. 同时删除多个 Excel 文档最后几个工作表

    概要:在我们工作中 Excel 类型的文件是我们接触的比较多的一种办公文件类型了,可能有时候我们也会遇到一个这样子的场景,那就是某一些 Excel 文件当中的最后一个或者几个工作表是重复的,或者说是我 ...

  8. 生成excel文档即便没有安装微软Excel

    下载:见http://files.cnblogs.com/happyfish78/Acey.ExcelX.Setup.zip 介绍 我们经常需要创建Excel文档,你会花很多时间,如何才能简单并且快速 ...

  9. Excel文档打开显示只读,如何取消只读功能?

    Excel文档打开显示只读,如何取消只读功能? 目录 Excel文档打开显示只读,如何取消只读功能? 1.打开文档点击[保存]时,自动弹出对话框显示[只读],只能另存文档,比较麻烦. 2.将该文档关闭 ...

  10. 在线合并Excel文档的HTML网页工具

    构建一个在线合并Excel文档的HTML网页工具 导语: 在本篇技术分享文章中,我将向您展示如何使用HTML.CSS和JavaScript构建一个功能强大的在线合并Excel文档的网页工具.这个工具可 ...

最新文章

  1. 哪个版本好_《道德经》道尽人生大智慧,哪个版本《道德经》的注释比较好呢?...
  2. aliyun服务器安装git,g++
  3. Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
  4. Ubuntu 华为开源镜像站 Mirror
  5. SAP UI5 busy Dialog debug
  6. C++ 详解拷贝构造函数
  7. 基础强化:深入理解JVM中的方法调用
  8. JAVA GUI界面组件学习
  9. 斗鱼回应与虎牙合并;Android 11 Beta 3 发布| 极客头条
  10. MAC iterm2配置rz sz
  11. 初中计算机期末质量分析,初中信息技术教学感悟随笔
  12. source pages
  13. “汉堡+奶昔”怎么就成了精致生活的热门标签?
  14. S3C2410,ARM920T,试题总结
  15. office2007每次打开都配置进度_win7下office2007总是配置进度怎么办-解决office2007显示配置进度的方法 - 河东软件园...
  16. 这些“新职业”到底好不好干?听听过来人怎么说
  17. c语言中表明空格的是什么代码,C语言代码中的空白符表示什么
  18. Java人脸识别相册分类按时间分类相册按城市分类相册app源码
  19. 数据校验(身份证,ip地址,银行卡号等)
  20. tf::Stamped<tf::Pose>

热门文章

  1. 洛谷——P1144 最短路计数
  2. php使用memcached缓存总结
  3. 基于拥挤距离与变异支配的多目标PSO算法
  4. Python单下划线与双下划线
  5. ENVI入门系列教程---二、图像分析---13. 遥感动态监测
  6. 【SQL】实验四 数据库的安全性、数据库备份、数据库恢复等机制
  7. ArcGIS运行任务前台显示
  8. 利用composer搭建PHP框架(二.控制器)
  9. STM32DMA搬运ADC只搬了一半数据的原因。
  10. java循环隔行变色_c:foreach标签详解----(隔行换背景颜色的问题)