最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

WinForm導(dǎo)出文件為Word、Excel、文本文件的方法

 更新時(shí)間:2015年03月06日 09:06:07   投稿:junjie  
這篇文章主要介紹了WinForm導(dǎo)出文件為Word、Excel、文本文件的方法,本文直接給出實(shí)現(xiàn)代碼,代碼中包含相應(yīng)注釋,需要的朋友可以參考下

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

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>
/// 將內(nèi)容導(dǎo)出為文件類。
/// </summary>
/// <remarks>
/// 作者:SunYujing
/// 日期:2011-12-18
/// </remarks>
  public class ExportFile
  {
    /// <summary>
/// 將字符串存儲為word文檔格式的文件的方法(多線程)。
/// </summary>
/// <param name="strText">要保存的字符串內(nèi)容。</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>
/// 導(dǎo)出數(shù)據(jù)表數(shù)據(jù)到Excel(多線程)。
/// </summary>
    public static void SaveAsExcel(System.Data.DataTable dataTable)
    {
      if (dataTable == null)
      {
        MessageUtil.ShowError("請先指定要導(dǎo)出的數(shù)據(jù)表");
        return;
      }
      Thread thread = new Thread(SaveAsExcelTableFile);
      thread.SetApartmentState(ApartmentState.STA);
      thread.Start(dataTable);
    }
    /// <summary>
/// 導(dǎo)出數(shù)據(jù)集數(shù)據(jù)到Excel(多線程)。
/// </summary>
    public static void SaveAsExcel(System.Data.DataSet dataSet)
    {
      if (dataSet == null)
      {
        MessageUtil.ShowError("請先指定要導(dǎo)出的數(shù)據(jù)集");
        return;
      }
      Thread thread = new Thread(SaveAsExcelSetFile);
      thread.SetApartmentState(ApartmentState.STA);
      thread.Start(dataSet);
    }
    /// <summary>
/// 將字符串存儲為word文檔格式的文件。
/// </summary>
/// <param name="strtext">要保存的字符串內(nèi)容。</param>
    private static void SaveAsWordFile(object strtext)
    {
      SaveFileDialog sfd = new SaveFileDialog();
      sfd.Title = "請選擇文件存放路徑";
      sfd.FileName = "導(dǎo)出數(shù)據(jù)";
      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文檔對象的內(nèi)容保存為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);
        //關(guān)閉WordDoc文檔對象
        doc.Close(ref nothing, ref nothing, ref nothing);
        //關(guān)閉WordApp組件對象
        word.Quit(ref nothing, ref nothing, ref nothing);
        GC.Collect();
        DateTime end = DateTime.Now;
        TimeSpan ts = end - start;
        MessageUtil.ShowMessage("文件保存成功,用時(shí)" + ts.ToString());
      }
      catch (System.Exception ex)
      {
        MessageUtil.ShowError(ex.Message);
      }
    }
    /// <summary>
/// 將字符串存儲為txt文檔格式的文件。
/// </summary>
/// <param name="strtext">要保存的字符串內(nèi)容。</param>
    private static void SaveAsTxtFile(object strtext)
    {
      SaveFileDialog sfd = new SaveFileDialog();
      sfd.Title = "請選擇文件存放路徑";
      sfd.FileName = "導(dǎo)出數(shù)據(jù)";
      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("文件保存成功,用時(shí)" + ts.ToString());
      }
      catch (Exception ex)
      {
        MessageUtil.ShowError(ex.Message);
      }
    }
    /// <summary>
/// 將數(shù)據(jù)存儲為Excel文件。
/// </summary>
/// <param name="p_dt">要保存的數(shù)據(jù)表。</param>
    private static void SaveAsExcelTableFile(object p_dt)
    {
      System.Data.DataTable dt = (System.Data.DataTable)p_dt;
      if (dt.Rows.Count == 0)
      {
        MessageUtil.ShowError("沒有可保存的數(shù)據(jù)");
        return;
      }
      SaveFileDialog sfd = new SaveFileDialog();
      sfd.Title = "請選擇文件存放路徑";
      sfd.FileName = "導(dǎo)出數(shù)據(jù)";
      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("無法創(chuàng)建Excel對象,可能您的機(jī)器未安裝Excel");
          return;
        }
        else
        {
          MessageUtil.ShowThreadMessage("正在導(dǎo)出數(shù)據(jù),請稍候...");
          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;
          //使用垃圾回收可以關(guān)閉EXCEL.EXE進(jìn)程
          GC.Collect();
          DateTime end = DateTime.Now;
          int iTimeSpan = (end.Minute - start.Minute) * 60 + (end.Second - start.Second);
          MessageUtil.ShowMessage("數(shù)據(jù)導(dǎo)出完畢,用時(shí)" + iTimeSpan.ToString() + "秒");
        }
      }
    }
    /// <summary>
/// 將數(shù)據(jù)集存儲為Excel文件。
/// </summary>
/// <param name="p_ds">要導(dǎo)出的數(shù)據(jù)集。</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("沒有可保存的數(shù)據(jù)");
        return;
      }
      SaveFileDialog sfd = new SaveFileDialog();
      sfd.Title = "請選擇文件存放路徑";
      sfd.FileName = "導(dǎo)出數(shù)據(jù)";
      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("無法創(chuàng)建Excel對象,可能您的機(jī)器未安裝Excel");
          return;
        }
        else
        {
          MessageUtil.ShowThreadMessage("正在導(dǎo)出數(shù)據(jù),請稍候...");
          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("數(shù)據(jù)導(dǎo)出完畢,用時(shí)" + (iTimeSapn / 60).ToString() + "分" + (iTimeSapn % 60).ToString() + "秒");
        }
      }
    }
  }
}

相關(guān)文章

  • Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    Unity shader實(shí)現(xiàn)多光源漫反射以及陰影

    這篇文章主要為大家詳細(xì)介紹了shader實(shí)現(xiàn)多光源漫反射以及陰影,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • C# 枚舉Color并展示各種顏色效果的示例

    C# 枚舉Color并展示各種顏色效果的示例

    本文主要介紹了C# 枚舉Color并展示各種顏色效果,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • C#中倒序輸出字符串的方法示例

    C#中倒序輸出字符串的方法示例

    這篇文章主要給大家介紹了C#中倒序輸出字符串的方法示例,本文中的字符串倒序指的是將“嗎? 好 近 最”輸出“最 近 好 嗎?”,文中給出了兩種方法,需要的朋友可以參考借鑒,下面來跟著小編一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-01-01
  • 利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息

    利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)獲取當(dāng)前設(shè)備硬件信息的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下
    2023-03-03
  • 解析C#設(shè)計(jì)模式編程中外觀模式Facade Pattern的應(yīng)用

    解析C#設(shè)計(jì)模式編程中外觀模式Facade Pattern的應(yīng)用

    這篇文章主要介紹了C#設(shè)計(jì)模式編程中外觀模式Facade Pattern的應(yīng)用,外觀模式中分為門面(Facade)和子系統(tǒng)(subsystem)兩個角色來進(jìn)行實(shí)現(xiàn),需要的朋友可以參考下
    2016-02-02
  • c#實(shí)現(xiàn)網(wǎng)頁圖片提取工具代碼分享

    c#實(shí)現(xiàn)網(wǎng)頁圖片提取工具代碼分享

    c#實(shí)現(xiàn)網(wǎng)頁圖片提取工具代碼分享,大家參考使用吧
    2013-12-12
  • WPF實(shí)現(xiàn)播放RTSP視頻流

    WPF實(shí)現(xiàn)播放RTSP視頻流

    這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)播放RTSP視頻流的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-01-01
  • 在C#中如何使用JSON

    在C#中如何使用JSON

    JSON(JavaScript?Object?Notation)是一種輕量級的數(shù)據(jù)交換格式,具有易讀、易解析的特點(diǎn),廣泛用于API數(shù)據(jù)交互、配置文件等,本文介紹在C#中如何使用JSON,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • Unity實(shí)現(xiàn)俄羅斯方塊(三)

    Unity實(shí)現(xiàn)俄羅斯方塊(三)

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)俄羅斯方塊的第一部分代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • C# 中const,readonly,static的使用小結(jié)

    C# 中const,readonly,static的使用小結(jié)

    這篇文章主要介紹了C# 中使用const,readonly,static的示例,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-01-01

最新評論

象州县| 辉南县| 调兵山市| 江阴市| 湘潭县| 额济纳旗| 仁布县| 保康县| 鱼台县| 新兴县| 改则县| 钦州市| 即墨市| 滦平县| 临漳县| 梁山县| 潜山县| 二手房| 东海县| 个旧市| 墨江| 鄂州市| 广水市| 琼中| 义马市| 南雄市| 亚东县| 神农架林区| 东源县| 朔州市| 鄂托克前旗| 黔西县| 巴塘县| 漳州市| 宽甸| 英吉沙县| 兰坪| 获嘉县| 神池县| 馆陶县| 鸡东县|