• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例

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

作者:雨竹 字体:[增加 减小] 来源:互联网 时间:2017-05-28

雨竹 通过本文主要向大家介绍了c#中dataset用法,c#中dataset,c#dataset用法,c#遍历dataset,c#dataset等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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);
  //加粗标题
  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<cl;i++)
  {
  xlsheet.ActiveSheet.Cells[colsecond,i+1]=dt.Columns[i].Caption.ToString();
  }
      //逐行处理数据
  foreach(DataRow row in myRow)
  {
  //当前数据写入
  for(i=0;i<cl;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
 /// <summary>
 /// 导出Excel文件类
 /// </summary>
 /// <param name="ds"></param>
 /// <param name="FileName"></param>
 ///
 #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(FileNa



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#实现DataSet内数据转化为Excel和Word文件的通用类完整实例
  • c#使用Dataset读取XML文件动态生成菜单的方法
  • C#通过DataSet读写xml文件的方法
  • C#检测DataSet是否为空的方法
  • C#从数据库读取数据到DataSet并保存到xml文件的方法
  • C#将Excel中的数据转换成DataSet
  • C#中DataSet转化为实体集合类的方法
  • C#遍历DataSet控件实例总结
  • C#中遍历DataSet数据集对象实例
  • c#的dataset离线数据集示例

相关文章

  • 2017-05-28WPF仿三星手机充电界面实现代码
  • 2017-05-28C#中使用强制类型实现字符串和ASCII码之间的转换
  • 2017-05-28C#图书管理系统 附源码下载
  • 2017-05-28C#实现微信公众号群发消息(解决一天只能发一次的限制)实例分享
  • 2017-05-28c#数据的序列化和反序列化(推荐版)
  • 2017-05-28C#权限管理和设计浅谈
  • 2017-05-28详解C#编程中构造函数的使用
  • 2017-05-28C#实现强制关闭当前程序进程
  • 2017-05-28utf8编码检测方法分享
  • 2017-05-28C#反色处理及其效率问题分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#实现人民币大写转换示例代码
    • C#实现汉字转换为拼音缩写的代码
    • .NET中实现彩色光标、动画光标及自定义光标的方法
    • c#调用c++方法介绍,window api
    • C#检测是否有u盘插入的方法
    • c# 应用事务的简单实例
    • C#特性 迭代器(下) yield以及流的延迟计算
    • C#使用foreach语句遍历堆栈(Stack)的方法
    • c# 以类名为参创建父类相同的类的实例代码
    • 在Winform和WPF中注册全局快捷键实现思路及代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有