用c#转换word或excel文档为html文件,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
// {
// 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文件的通用类完整实例...相关推荐
- 一个excel文档里复制黏贴另外表单跟着变动_利用Excel连接Power BI,实现PPT报告自动输出...
文/HALI就职于汽车行业战略部门 专注汽车市场信息情报收集和分析 因为工作需要,每月周期性的更新数据和撰写PPT 报告成为繁重的劳动.结果是很多时间花费在数据处理上,真正的分析工作,往往只能草草收 ...
- Python实现谷歌翻译爬虫,翻译PDF,翻译Excel,支持excel文档打开翻译,支持xlsx,xlsm等格式。
前言: 这两个Python脚本是我在实习期间完成的,具体来自于小组主管的两个小需求.做完之后感觉还是挺有收获的. 实现谷歌翻译,首先需要将我们写的Python脚本还有需要翻译的文件放到谷歌浏览器的安装 ...
- 计算机excel还原,3种方法找回电脑上已删除的Excel文档
Microsoft Office Excel是微软(Microsoft)为Windows及macOS所设计的试算表软件.它的计算.绘图工具.枢纽分析表和一个称作VBA(Visual Basic for ...
- 计算机自定义大小修改数值,如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改...
如何将电脑excel文档中的单元格颜色设置为根据数值大小自动修改 腾讯视频/爱奇艺/优酷/外卖 充值4折起 当我们在使用电脑的时候,如果想要处理数据的话,一般都会用到excel软件,在excel中,如 ...
- 如何打开html的文档结构图,如何在Word中设置文档结构图
在使用Word文档编辑大量文字内容时,有涉及到很多章节,有时候页数太多,很难操作前后快速链接起来,为了让整个文案的脉络承上启下,那如何在Word中设置文档结构图? 接下来小编跟大家介绍下如何设置wor ...
- 同时删除多个 Excel 文档前几个工作表
概要:一个 Excel 文档经常会包含多个工作表,也就是常说的 Sheet,有时候可能文档当中前面几个工作表示我们不想要的,所以我们就需要对这些工作表进行删除.但是怎么样才能够做到同时删除多个 Exc ...
- 同时删除多个 Excel 文档最后几个工作表
概要:在我们工作中 Excel 类型的文件是我们接触的比较多的一种办公文件类型了,可能有时候我们也会遇到一个这样子的场景,那就是某一些 Excel 文件当中的最后一个或者几个工作表是重复的,或者说是我 ...
- 生成excel文档即便没有安装微软Excel
下载:见http://files.cnblogs.com/happyfish78/Acey.ExcelX.Setup.zip 介绍 我们经常需要创建Excel文档,你会花很多时间,如何才能简单并且快速 ...
- Excel文档打开显示只读,如何取消只读功能?
Excel文档打开显示只读,如何取消只读功能? 目录 Excel文档打开显示只读,如何取消只读功能? 1.打开文档点击[保存]时,自动弹出对话框显示[只读],只能另存文档,比较麻烦. 2.将该文档关闭 ...
- 在线合并Excel文档的HTML网页工具
构建一个在线合并Excel文档的HTML网页工具 导语: 在本篇技术分享文章中,我将向您展示如何使用HTML.CSS和JavaScript构建一个功能强大的在线合并Excel文档的网页工具.这个工具可 ...
最新文章
- 哪个版本好_《道德经》道尽人生大智慧,哪个版本《道德经》的注释比较好呢?...
- aliyun服务器安装git,g++
- Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
- Ubuntu 华为开源镜像站 Mirror
- SAP UI5 busy Dialog debug
- C++ 详解拷贝构造函数
- 基础强化:深入理解JVM中的方法调用
- JAVA GUI界面组件学习
- 斗鱼回应与虎牙合并;Android 11 Beta 3 发布| 极客头条
- MAC iterm2配置rz sz
- 初中计算机期末质量分析,初中信息技术教学感悟随笔
- source pages
- “汉堡+奶昔”怎么就成了精致生活的热门标签?
- S3C2410,ARM920T,试题总结
- office2007每次打开都配置进度_win7下office2007总是配置进度怎么办-解决office2007显示配置进度的方法 - 河东软件园...
- 这些“新职业”到底好不好干?听听过来人怎么说
- c语言中表明空格的是什么代码,C语言代码中的空白符表示什么
- Java人脸识别相册分类按时间分类相册按城市分类相册app源码
- 数据校验(身份证,ip地址,银行卡号等)
- tf::Stamped<tf::Pose>