国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

WinForm導出文件為Word、Excel、文本文件的方法

2020-01-24 02:08:23
字體:
來源:轉載
供稿:網友

好久沒有寫文章了,下面把自己最近程序中用到的一個小小的導出文件的方法給在家分享一下,歡迎大家來排磚,謝謝~不說廢話了,直接上代碼:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Threading;using Microsoft.Office.Interop.Word;using System.IO;using Microsoft.Office.Interop.Excel;using Sun.Winform.Util;namespace Sun.Winform.Files{  /// <summary>/// 將內容導出為文件類。/// </summary>/// <remarks>/// 作者:SunYujing/// 日期:2011-12-18/// </remarks>  public class ExportFile  {    /// <summary>/// 將字符串存儲為word文檔格式的文件的方法(多線程)。/// </summary>/// <param name="strText">要保存的字符串內容。</param>    public static void SaveAsWord(string p_str)    {      Thread thread = new Thread(SaveAsWordFile);      thread.SetApartmentState(ApartmentState.STA);      thread.Start(p_str);    }    /// <summary>/// 將字符串存儲為txt格式的文件的方法(多線程)。/// </summary>/// <param name="p_str"></param>    public static void SaveAsTxt(string p_str)    {      Thread thread = new Thread(SaveAsTxtFile);      thread.SetApartmentState(ApartmentState.STA);      thread.Start(p_str);    }    /// <summary>/// 導出數據表數據到Excel(多線程)。/// </summary>    public static void SaveAsExcel(System.Data.DataTable dataTable)    {      if (dataTable == null)      {        MessageUtil.ShowError("請先指定要導出的數據表");        return;      }      Thread thread = new Thread(SaveAsExcelTableFile);      thread.SetApartmentState(ApartmentState.STA);      thread.Start(dataTable);    }    /// <summary>/// 導出數據集數據到Excel(多線程)。/// </summary>    public static void SaveAsExcel(System.Data.DataSet dataSet)    {      if (dataSet == null)      {        MessageUtil.ShowError("請先指定要導出的數據集");        return;      }      Thread thread = new Thread(SaveAsExcelSetFile);      thread.SetApartmentState(ApartmentState.STA);      thread.Start(dataSet);    }    /// <summary>/// 將字符串存儲為word文檔格式的文件。/// </summary>/// <param name="strtext">要保存的字符串內容。</param>    private static void SaveAsWordFile(object strtext)    {      SaveFileDialog sfd = new SaveFileDialog();      sfd.Title = "請選擇文件存放路徑";      sfd.FileName = "導出數據";      sfd.Filter = "Word文檔(*.doc)|*.doc";      if (sfd.ShowDialog() != DialogResult.OK)      {        return;      }      string FileName = sfd.FileName.ToLower();      if (!FileName.Contains(".doc"))      {        FileName += ".doc";      }      if (FileName.Substring(FileName.LastIndexOf(Path.DirectorySeparatorChar)).Length <= 5)      {        MessageUtil.ShowThreadMessage("文件保存失敗,文件名不能為空!");        return;      }      try      {        DateTime start = DateTime.Now;        MessageUtil.ShowThreadMessage("正在保存文件,請稍候...");        Microsoft.Office.Interop.Word.ApplicationClass word = new Microsoft.Office.Interop.Word.ApplicationClass();        Microsoft.Office.Interop.Word._Document doc;        object nothing = System.Reflection.Missing.Value;        doc = word.Documents.Add(ref nothing, ref nothing, ref nothing, ref nothing);        doc.Paragraphs.Last.Range.Text = strtext.ToString();        object myfileName = FileName;        //將WordDoc文檔對象的內容保存為doc文檔        doc.SaveAs(ref myfileName, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing, ref nothing);        //關閉WordDoc文檔對象        doc.Close(ref nothing, ref nothing, ref nothing);        //關閉WordApp組件對象        word.Quit(ref nothing, ref nothing, ref nothing);        GC.Collect();        DateTime end = DateTime.Now;        TimeSpan ts = end - start;        MessageUtil.ShowMessage("文件保存成功,用時" + ts.ToString());      }      catch (System.Exception ex)      {        MessageUtil.ShowError(ex.Message);      }    }    /// <summary>/// 將字符串存儲為txt文檔格式的文件。/// </summary>/// <param name="strtext">要保存的字符串內容。</param>    private static void SaveAsTxtFile(object strtext)    {      SaveFileDialog sfd = new SaveFileDialog();      sfd.Title = "請選擇文件存放路徑";      sfd.FileName = "導出數據";      sfd.Filter = "文本文檔(*.txt)|*.txt";      if (sfd.ShowDialog() != DialogResult.OK)      {        return;      }      string FileName = sfd.FileName.ToLower();      if (!FileName.Contains(".txt"))      {        FileName += ".txt";      }      if (FileName.Substring(FileName.LastIndexOf(Path.DirectorySeparatorChar)).Length <= 5)      {        MessageUtil.ShowThreadMessage("文件保存失敗,文件名不能為空!");        return;      }      try      {        DateTime start = DateTime.Now;        StreamWriter sw = new StreamWriter(FileName, false);        sw.Write(strtext.ToString());        sw.Flush();        sw.Close();        DateTime end = DateTime.Now;        TimeSpan ts = end - start;        MessageUtil.ShowMessage("文件保存成功,用時" + ts.ToString());      }      catch (Exception ex)      {        MessageUtil.ShowError(ex.Message);      }    }    /// <summary>/// 將數據存儲為Excel文件。/// </summary>/// <param name="p_dt">要保存的數據表。</param>    private static void SaveAsExcelTableFile(object p_dt)    {      System.Data.DataTable dt = (System.Data.DataTable)p_dt;      if (dt.Rows.Count == 0)      {        MessageUtil.ShowError("沒有可保存的數據");        return;      }      SaveFileDialog sfd = new SaveFileDialog();      sfd.Title = "請選擇文件存放路徑";      sfd.FileName = "導出數據";      sfd.Filter = "Excel文檔(*.xls)|*.xls";      if (sfd.ShowDialog() != DialogResult.OK)      {        return;      }      string FileName = sfd.FileName.ToLower();      if (!FileName.Contains(".xls"))      {        FileName += ".xls";      }      if (FileName.Substring(FileName.LastIndexOf(Path.DirectorySeparatorChar)).Length <= 5)      {        MessageUtil.ShowThreadMessage("文件保存失敗,文件名不能為空!");        return;      }      if (sfd.FileName != "")      {        Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();        if (excelApp == null)        {          MessageBox.Show("無法創建Excel對象,可能您的機器未安裝Excel");          return;        }        else        {          MessageUtil.ShowThreadMessage("正在導出數據,請稍候...");          DateTime start = DateTime.Now;          Microsoft.Office.Interop.Excel.Workbooks workbooks = excelApp.Workbooks;          Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);          Microsoft.Office.Interop.Excel.Worksheet worksheet = (Worksheet)workbook.Worksheets[1];          for (int col = 1; col <= dt.Columns.Count; col++)          {            worksheet.Cells[1, col] = dt.Columns[col - 1].Caption.ToString();          }          for (int i = 0; i < dt.Rows.Count; i++)          {            for (int j = 0; j < dt.Columns.Count; j++)            {              worksheet.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();            }          }          workbook.Saved = true;          workbook.SaveCopyAs(sfd.FileName);          //釋放資源          System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);          worksheet = null;          System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);          workbook = null;          workbooks.Close();          System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);          workbooks = null;          excelApp.Quit();          System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);          excelApp = null;          //使用垃圾回收可以關閉EXCEL.EXE進程          GC.Collect();          DateTime end = DateTime.Now;          int iTimeSpan = (end.Minute - start.Minute) * 60 + (end.Second - start.Second);          MessageUtil.ShowMessage("數據導出完畢,用時" + iTimeSpan.ToString() + "秒");        }      }    }    /// <summary>/// 將數據集存儲為Excel文件。/// </summary>/// <param name="p_ds">要導出的數據集。</param>    private static void SaveAsExcelSetFile(object p_ds)    {      System.Data.DataSet ds = (System.Data.DataSet)p_ds;      if (ds == null || ds.Tables.Count == 0)      {        MessageUtil.ShowError("沒有可保存的數據");        return;      }      SaveFileDialog sfd = new SaveFileDialog();      sfd.Title = "請選擇文件存放路徑";      sfd.FileName = "導出數據";      sfd.Filter = "Excel文檔(*.xls)|*.xls";      if (sfd.ShowDialog() != DialogResult.OK)      {        return;      }      string FileName = sfd.FileName.ToLower();      if (!FileName.Contains(".xls"))      {        FileName += ".xls";      }      if (FileName.Substring(FileName.LastIndexOf(Path.DirectorySeparatorChar)).Length <= 5)      {        MessageUtil.ShowThreadMessage("文件保存失敗,文件名不能為空!");        return;      }      if (sfd.FileName != "")      {        Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();        if (excelApp == null)        {          MessageBox.Show("無法創建Excel對象,可能您的機器未安裝Excel");          return;        }        else        {          MessageUtil.ShowThreadMessage("正在導出數據,請稍候...");          DateTime start = DateTime.Now;          Microsoft.Office.Interop.Excel.Workbooks workbooks = excelApp.Workbooks;          Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet);          Microsoft.Office.Interop.Excel.Worksheet worksheet = null;          object objMissing = System.Reflection.Missing.Value;          for (int m = 0; m < ds.Tables.Count; m++)          {            System.Data.DataTable dt = ds.Tables[m];            worksheet = (Worksheet)workbook.ActiveSheet;            worksheet.Name = dt.TableName;            for (int col = 1; col <= dt.Columns.Count; col++)            {              worksheet.Cells[1, col] = dt.Columns[col - 1].Caption.ToString();            }            for (int i = 1; i <= dt.Rows.Count; i++)            {              for (int j = 1; j <= dt.Columns.Count; j++)              {                worksheet.Cells[i + 1, j] = dt.Rows[i - 1][j - 1].ToString();              }            }            if (m < ds.Tables.Count - 1)            {              workbook.Sheets.Add(objMissing, objMissing, 1, XlSheetType.xlWorksheet);            }          }          workbook.Saved = true;          workbook.SaveCopyAs(sfd.FileName);          //釋放資源          System.Runtime.InteropServices.Marshal.ReleaseComObject(worksheet);          worksheet = null;          System.Runtime.InteropServices.Marshal.ReleaseComObject(workbook);          workbook = null;          workbooks.Close();          System.Runtime.InteropServices.Marshal.ReleaseComObject(workbooks);          workbooks = null;          excelApp.Quit();          System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);          excelApp = null;          GC.Collect();          DateTime end = DateTime.Now;          int iTimeSapn = (end.Minute - start.Minute) * 60 + (end.Second - start.Second);          MessageUtil.ShowMessage("數據導出完畢,用時" + (iTimeSapn / 60).ToString() + "分" + (iTimeSapn % 60).ToString() + "秒");        }      }    }  }}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 驻马店市| 科技| 永修县| 洪湖市| 吉首市| 汝城县| 托克托县| 长治市| 嘉祥县| 旺苍县| 葫芦岛市| 龙川县| 资阳市| 遵义县| 奉节县| 登封市| 乐昌市| 鸡东县| 中西区| 天祝| 高州市| 塘沽区| 百色市| 奎屯市| 肇源县| 鄂伦春自治旗| 大关县| 哈尔滨市| 宜州市| 海阳市| 易门县| 藁城市| 秀山| 景谷| 河间市| 海口市| 遂昌县| 北海市| 贵定县| 垣曲县| 靖宇县|