欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C#教程

當前位置:主頁 > 軟件編程 > C#教程 >

C#實現(xiàn)DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類完整實例

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C#教程|點擊: 次

本文實例講述了C#實現(xiàn)DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類。分享給大家供大家參考,具體如下:

前不久因為項目的需要寫的一個C#把DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類,這些關(guān)于Excel、Word的導(dǎo)出方法,基本可以實現(xiàn)日常須要,其中有些方法可以把數(shù)據(jù)導(dǎo)出后 生成Xml格式,再導(dǎo)入數(shù)據(jù)庫!有些屏蔽內(nèi)容沒有去掉,保留下來方便學(xué)習參考用之。 最后請引用Office相應(yīng)COM組件,導(dǎo)出Excel對象的一個方法要調(diào)用其中的一些方法和屬性。

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數(shù)據(jù)集內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel、Word文件
 /// 描述:這些關(guān)于Excel、Word的導(dǎo)出方法,基本可以實現(xiàn)日常須要,其中有些方法可以把數(shù)據(jù)導(dǎo)出后
 ///    生成Xml格式,再導(dǎo)入數(shù)據(jù)庫!有些屏蔽內(nèi)容沒有去掉,保留下來方便學(xué)習參考用之。
 /// 備注:請引用Office相應(yīng)COM組件,導(dǎo)出Excel對象的一個方法要調(diào)用其中的一些方法和屬性。
 /// </summary>
 public class ExportFiles
 {
 /// <summary>
 ///
 /// </summary>
 ///
 #region //構(gòu)造函數(shù)
 public ExportFiles()
 {
  //
  // TODO: 在此處添加構(gòu)造函數(shù)邏輯
  //
 }
 #endregion
 /// <summary>
 /// 調(diào)用Excel.dll導(dǎo)出Excel文件
 /// </summary>
 /// <param name="ds"></param>
 ///
 #region // 調(diào)用Excel.dll導(dǎo)出Excel文件
     /// <summary>
     ///
     /// </summary>
     /// <param name="ds">DataSet數(shù)據(jù)庥</param>
     /// <param name="Duser">登錄用戶(如session["username"].Tostring())可為null或空</param>
     /// <param name="titlename">添加一個報表標題</param>
     /// <param name="filepath">指定文件在服務(wù)器上的存放地址(如:Server.MapPath("."))可為null或空</param>
     ///
     /// 為什么在這里設(shè)置個filepath?
     /// 原因如下:filepath接收的內(nèi)容是Server.MapPath(".")這個參數(shù)值,這個值在這本類中對
     /// System.Web.HttpServerUtility HServer=new System.Web.HttpServerUtility()的引用出錯,因為沒有繼承Page類
     /// 所以只能以傳值的形式調(diào)用了,你有好的辦法可以修改,那就再好不過了!
 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 //屏蔽內(nèi)容
  ///本來想用下面的這個辦法實現(xiàn)的,可在IIS中必須設(shè)置相關(guān)的權(quán)限
  ///所以就放棄了,把代碼設(shè)置為屏蔽內(nèi)容,供學(xué)習參考!
  ///
//  Microsoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
//
//  if(app==null)
//  {
//        throw new Exception("系統(tǒng)調(diào)用錯誤(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;
//  //取得數(shù)據(jù)表各列標題
//  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;
  //設(shè)置標題大小
  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);
  //設(shè)置標題水平居中
  xlsheet.get_Range(xlsheet.Cells,xlsheet.Cells).set_HorizontalAlignment(OWC.Owc11.XlHAlign.xlHAlignCenter);
  //設(shè)置單元格寬度
  //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);
  //取得數(shù)據(jù)表各列標題,各標題之間以\t分割,最后一個列標題后加回車符
  for(i=0;i<cl;i++)
  {
  xlsheet.ActiveSheet.Cells[colsecond,i+1]=dt.Columns[i].Caption.ToString();
  }
      //逐行處理數(shù)據(jù)
  foreach(DataRow row in myRow)
  {
  //當前數(shù)據(jù)寫入
  for(i=0;i<cl;i++)
  {
   xlsheet.ActiveSheet.Cells[colnumber,i+1]=row[i].ToString().Trim();
  }
  colnumber++;
  }
  //設(shè)置邊框線
  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(".")+"http://testowc.xls";
  xlsheet.Export(filepath+"http://exportfiles//~$"+userfile+".xls",OWC.Owc11.SheetExportActionEnum.ssExportActionNone,OWC.Owc11.SheetExportFormat.ssExportXMLSpreadsheet);
  }
  catch(Exception e)
  {
  throw new Exception("系統(tǒng)調(diào)用錯誤或有打開的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+"http://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>
 /// 導(dǎo)出Excel文件類
 /// </summary>
 /// <param name="ds"></param>
 /// <param name="FileName"></param>
 ///
 #region //導(dǎo)出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;
  //取得數(shù)據(jù)表各列標題,各標題之間以\t分割,最后一個列標題后加回車符
  for(i=0;i<cl;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);
  //逐行處理數(shù)據(jù)
  foreach(DataRow row in myRow)
  {
   //當前數(shù)據(jù)寫入
   for(i=0;i<cl;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
 /// <summary>
 /// 數(shù)據(jù)集轉(zhuǎn)換,即把DataSet轉(zhuǎn)換為Excel對象
 /// </summary>
 /// <param name="ds"></param>
 /// <param name="FileName"></param>
 /// <param name="titlename"></param>
 ///
 #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="<table border='0' cellpadding='0' cellspacing='0' style='border-right:#000000 0.1pt solid;border-top:#000000 0.1pt solid;'>";
  string EndTab="</table>";
  string FileIO=null;
  string MainIO=null;
  string TitleTab="<tr><td colspan='"+cl+"' style='font-size:30px;' align='center'>"+titlename+"</td></tr><tr><td colspan='"+cl+"' align='right' style='font-size:15px;'>"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日    </td></tr>";
  string BeginTr="<tr>";
  string EndTr="</tr>";
  for(i=0;i<cl;i++)
  {
  FileIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+dt.Columns[i].Caption.ToString()+"</td>";
  }
  FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();
  //逐行處理數(shù)據(jù)
  foreach(DataRow row in myRow)
  {
  string OutIO=null;
  //當前數(shù)據(jù)寫入
  for(i=0;i<cl;i++)
  {
   OutIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+row[i].ToString()+"</td>";
  }
  MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();
  }
  FileIO="<center><table>"+TitleTab.ToString()+"<tr>"+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"</tr></table></center>";
  resp.Write(FileIO.ToString());
  resp.End();
 }
 #endregion
 /// <summary>
 /// 導(dǎo)出Word文件類
 /// </summary>
 /// <param name="ds"></param>
 /// <param name="FileName"></param>
 ///
 #region //導(dǎo)出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;
  //取得數(shù)據(jù)表各列標題,各標題之間以\t分割,最后一個列標題后加回車符
  for(i=0;i<cl;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);
  //逐行處理數(shù)據(jù)
  foreach(DataRow row in myRow)
  {
   //當前數(shù)據(jù)寫入
   for(i=0;i<cl;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
 /// <summary>
 /// 數(shù)據(jù)集轉(zhuǎn)換,即把DataSet轉(zhuǎn)換為Word對象
 /// </summary>
 /// <param name="ds"></param>
 /// <param name="titlename"></param>
 ///
 #region // 運行html+css生成Word文件
 public void DataSetToWord(DataSet ds,string FileName,string titlename)
 {
  //調(diào)用Office
  //備注:速度太慢放棄應(yīng)用此方法
  //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="<center><table><tr><td>報表測試</td></tr></table>"+"\n";
//  string EndFile="</center>";
//  //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="<table border='0' cellpadding='0' cellspacing='0' style='border-right:#000000 0.1pt solid;border-top:#000000 0.1pt solid;'>";
  string EndTab="</table>";
  string FileIO=null;
  string MainIO=null;
  string TitleTab="<tr><td style='font-size:13px;' align='center'>"+titlename+"</td></tr><tr><td align='right' style='font-size:15px;'>"+DateTime.Now.Year.ToString()+"年"+DateTime.Now.Month.ToString()+"月"+DateTime.Now.Day.ToString()+"日    </td></tr>";
  string BeginTr="<tr>";
  string EndTr="</tr>";
  for(i=0;i<cl;i++)
  {
  FileIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+dt.Columns[i].Caption.ToString()+"</td>";
  }
  FileIO=BeginTr.ToString()+FileIO.ToString()+EndTr.ToString();
  //逐行處理數(shù)據(jù)
  foreach(DataRow row in myRow)
  {
  string OutIO=null;
  //當前數(shù)據(jù)寫入
  for(i=0;i<cl;i++)
  {
   OutIO+="<td style='border-left:#000000 0.1pt solid; border-bottom:#000000 1.0pt solid; font-size:15px;' align='center'>"+row[i].ToString()+"</td>";
  }
  MainIO+=BeginTr.ToString()+OutIO.ToString()+EndTr.ToString();
  }
  FileIO="<center><table>"+TitleTab.ToString()+"<tr>"+BeginTab.ToString()+FileIO.ToString()+MainIO.ToString()+EndTab.ToString()+"</tr></table></center>";
  resp.Write(FileIO.ToString());
  resp.End();
 }
 #endregion
 }
}

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#操作Excel技巧總結(jié)》、《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》及《C#程序設(shè)計之線程使用技巧總結(jié)》

希望本文所述對大家C#程序設(shè)計有所幫助。

上一篇:LZW壓縮算法 C#源碼

欄    目:C#教程

下一篇:C#中l(wèi)ist用法實例

本文標題:C#實現(xiàn)DataSet內(nèi)數(shù)據(jù)轉(zhuǎn)化為Excel和Word文件的通用類完整實例

本文地址:http://mengdiqiu.com.cn/a1/C_jiaocheng/6413.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有