2016年5月30日 星期一

C# EXCEL

出處


C# 輸出 Excel

以下是使用 C# 輸出 Excel 檔的範例。
環境:Microsoft Visual Studio 2012 Express、 .Net Framework 4.5


將 Excel 物件程式庫加入參考
  1. 在「方案」底下的「參考」按右鍵,選擇「加入參考」
  2. 在「參考管理員」畫面,選左邊的「COM」,再搜尋 excel,勾選「Microsoft Excel 版本 Object Library」,版本會依安裝的 Excel 而不同,按「確定」加入參考。


將 System.Drawing 組件加入參考
如果要設定欄位背景、文字顏色,可將 System.Drawing 組件加入參考
在「參考管理員」畫面,選左邊的「組件」,再搜尋 drawing,勾選「System.Drawing」,按「確定」加入參考。



設定引用的 using
1
2
using Excel = Microsoft.Office.Interop.Excel;
using System.Drawing;


範例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
static void Main(string[] args)
{
    // 設定儲存檔名,不用設定副檔名,系統自動判斷 excel 版本,產生 .xls 或 .xlsx 副檔名
    string pathFile = @"D:\test";
 
    Excel.Application excelApp;
    Excel._Workbook wBook;
    Excel._Worksheet wSheet;
    Excel.Range wRange;
 
    // 開啟一個新的應用程式
    excelApp = new Excel.Application();
 
    // 讓Excel文件可見
    excelApp.Visible = true;
 
    // 停用警告訊息
    excelApp.DisplayAlerts = false;
 
    // 加入新的活頁簿
    excelApp.Workbooks.Add(Type.Missing);
 
    // 引用第一個活頁簿
    wBook = excelApp.Workbooks[1];
 
    // 設定活頁簿焦點
    wBook.Activate();
 
    try
    {
        // 引用第一個工作表
        wSheet = (Excel._Worksheet)wBook.Worksheets[1];
 
        // 命名工作表的名稱
        wSheet.Name = "工作表測試";
 
        // 設定工作表焦點
        wSheet.Activate();
 
        excelApp.Cells[1, 1] = "Excel測試";
 
        // 設定第1列資料
        excelApp.Cells[1, 1] = "名稱";
        excelApp.Cells[1, 2] = "數量";
        // 設定第1列顏色
        wRange = wSheet.Range[wSheet.Cells[1, 1], wSheet.Cells[1, 2]];
        wRange.Select();
        wRange.Font.Color = ColorTranslator.ToOle(Color.White);
        wRange.Interior.Color = ColorTranslator.ToOle(Color.DimGray);
 
        // 設定第2列資料
        excelApp.Cells[2, 1] = "AA";
        excelApp.Cells[2, 2] = "10";
 
        // 設定第3列資料
        excelApp.Cells[3, 1] = "BB";
        excelApp.Cells[3, 2] = "20";
 
        // 設定第4列資料
        excelApp.Cells[4, 1] = "CC";
        excelApp.Cells[4, 2] = "30";
 
        // 設定第5列資料
        excelApp.Cells[5, 1] = "總計";
        // 設定總和公式 =SUM(B2:B4)
        excelApp.Cells[5, 2].Formula = string.Format("=SUM(B{0}:B{1})", 2, 4);
        // 設定第5列顏色
        wRange = wSheet.Range[wSheet.Cells[5, 1], wSheet.Cells[5, 2]];
        wRange.Select();
        wRange.Font.Color = ColorTranslator.ToOle(Color.Red);
        wRange.Interior.Color = ColorTranslator.ToOle(Color.Yellow);
 
        // 自動調整欄寬
        wRange = wSheet.Range[wSheet.Cells[1, 1], wSheet.Cells[5, 2]];
        wRange.Select();
        wRange.Columns.AutoFit();
 
        try
        {
            //另存活頁簿
            wBook.SaveAs(pathFile, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
            Console.WriteLine("儲存文件於 " + Environment.NewLine + pathFile);
        }
        catch (Exception ex)
        {
            Console.WriteLine("儲存檔案出錯,檔案可能正在使用" + Environment.NewLine + ex.Message);
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("產生報表時出錯!" + Environment.NewLine + ex.Message);
    }
 
    //關閉活頁簿
    wBook.Close(false, Type.Missing, Type.Missing);
 
    //關閉Excel
    excelApp.Quit();
 
    //釋放Excel資源
    System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
    wBook = null;
    wSheet = null;
    wRange = null;
    excelApp = null;
    GC.Collect();
 
    Console.Read();
}


輸出結果:

沒有留言:

張貼留言