2016年5月30日 星期一

C# excel常用指令



MSDN
private _Workbook _workBook = null;
private Worksheet _workSheet = null;
private Excel.Application _excelApplicatin = null;

_excelApplicatin = new Excel.Application();
_excelApplicatin.Visible = true;
_excelApplicatin.DisplayAlerts = true;

_workBook = _excelApplicatin.Workbooks.Add(XlSheetType.xlWorksheet);
_workSheet = (Worksheet)_workBook.ActiveSheet;
_workSheet.Name = "workSheetName";

//打開已存在的Excel
string strExcelPathName = AppDomain.CurrentDomain.BaseDirectory + "excelSheetName.xls";
Excel.Workbook workBook = application.Workbooks.Open(strExcelPathName, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
//讀取已打開的Excel
Excel.Worksheet workSheet1 = (Excel.Worksheet)workBook.Sheets["SheetName1"];
Excel.Worksheet workSheet2 = (Excel.Worksheet)workBook.Sheets["SheetName2"];

//添加一個workSheet
Worksheet workSheet = (Worksheet)workBook.Worksheets.Add(System.Type.Missing, System.Type.Missing, System.Type.Missing, System.Type.Missing);

//RowHeight "1:1"表示第一行, "1:2"表示,第一行和第二行
((Excel.Range)_workSheet.Rows["1:1", System.Type.Missing]).RowHeight = 100;

//ColumnWidth "A:B"表示第一列和第二列, "A:A"表示第一列
((Excel.Range)_workSheet.Columns["A:B", System.Type.Missing]).ColumnWidth = 10;

// EXCEL操作(需要凍結的欄位 按住ALT+W 再按F)
Excel.Range excelRange = _workSheet .get_Range(_workSheet .Cells[10, 5], _workSheet .Cells[10, 5]);
excelRange.Select();
excelApplication.ActiveWindow.FreezePanes = true;

//Borders.LineStyle 儲存格邊框線
Excel.Range excelRange = _workSheet.get_Range(_workSheet.Cells[2, 2], _workSheet.Cells[4, 6]);
//儲存格邊框線類型(線型,虛線型)
excelRange.Borders.LineStyle = 1;
excelRange.Borders.get_Item(XlBordersIndex.xlEdgeTop).LineStyle = Excel.XlLineStyle.xlContinuous;
//指定儲存格下邊框線粗細,和色彩
excelRange.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = Excel.XlBorderWeight.xlMedium;

excelRange.Borders.get_Item(XlBordersIndex.xlEdgeBottom).ColorIndex =3;

//設置字體大小
excelRange.Font.Size = 15;
//設置字體是否有底線
excelRange.Font.Underline = true;

//設置字體在儲存格內的對其方式
excelRange.HorizontalAlignment = XlHAlign.xlHAlignCenter;
//設置儲存格的寬度
excelRange.ColumnWidth = 15;
//設置儲存格的背景色
excelRange.Cells.Interior.Color = System.Drawing.Color.FromArgb(255, 204, 153).ToArgb();
// 給儲存格加邊框
excelRange.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThick,
XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
//自動調整列寬
excelRange.EntireColumn.AutoFit();
// 文本水準居中方式
excelRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
//文本自動換行
excelRange.WrapText = true;
//填充顏色為淡紫色
excelRange.Interior.ColorIndex = 39;

//合併儲存格
excelRange.Merge(excelRange.MergeCells);
_workSheet.get_Range("A15", "B15").Merge(_workSheet.get_Range("A15", "B15").MergeCells);

/// <summary>
/// 常用顏色定義,對就Excel中顏色名
/// </summary>
public enum ColorIndex
{
無色 = -4142, 自動 = -4105, 黑色 = 1, 褐色 = 53, 橄欖 = 52, 深綠 = 51, 深青 = 49,
深藍 = 11, 靛藍 = 55, 灰色80 = 56, 深紅 = 9, 橙色 = 46, 深黃 = 12, 綠色 = 10,
青色 = 14, 藍色 = 5, 藍灰 = 47, 灰色50 = 16, 紅色 = 3, 淺橙色 = 45, 酸橙色 = 43,
海綠 = 50, 水綠色 = 42, 淺藍 = 41, 紫羅蘭 = 13, 灰色40 = 48, 粉紅 = 7,
金色 = 44, 黃色 = 6, 鮮綠 = 4, 青綠 = 8, 天藍 = 33, 梅紅 = 54, 灰色25 = 15,
玫瑰紅 = 38, 茶色 = 40, 淺黃 = 36, 淺綠 = 35, 淺青綠 = 34, 淡藍 = 37, 淡紫 = 39,
白色 = 2
}



range.NumberFormatLocal = "@"; //設置儲存格格式為文本

range = (Range)worksheet.get_Range("A1", "E1"); //獲取Excel多個儲存格區域:本例做為Excel表頭

range.Merge(0); //儲存格合併動作

worksheet.Cells[1, 1] = "Excel儲存格賦值"; //Excel儲存格賦值

range.Font.Size = 15; //設置字體大小

range.Font.Underline=true; //設置字體是否有底線

range.Font.Name="黑體"; 設置字體的種類

range.HorizontalAlignment=XlHAlign.xlHAlignCenter; //設置字體在儲存格內的對其方式

range.ColumnWidth=15; //設置儲存格的寬度

range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();//設置儲存格的背景色

range.Borders.LineStyle=1; //設置儲存格邊框的粗細

range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());//給儲存格加邊框

range.Borders.get_Item(Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop).LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone; //設置儲存格上邊框為無邊框

range.EntireColumn.AutoFit(); //自動調整列寬

Range.HorizontalAlignment= xlCenter; // 文本水準居中方式

Range.VerticalAlignment= xlCenter //文本垂直居中方式

Range.WrapText=true; //文本自動換行

Range.Interior.ColorIndex=39; //填充顏色為淡紫色

Range.Font.Color=clBlue; //字體顏色

xlsApp.DisplayAlerts=false; //保存Excel的時候,不彈出是否保存的視窗直接進行保存


range.NumberFormatLocal = "@";     //設置單元格格式為文本
range = (Range)worksheet.get_Range("A1", "E1");     //獲取Excel多個單元格區域:本例做為Excel表頭
range.Merge(0);     //單元格合併動作
worksheet.Cells[1, 1] = "Excel單元格賦值";     //Excel單元格賦值
range.Font.Size = 15;     //設置字體大小
range.Font.Underline=true;     //設置字體是否有下劃線
range.Font.Name="黑體";     設置字體的種類
range.HorizontalAlignment=XlHAlign.xlHAlignCenter;     //設置字體在單元格內的對其方式
range.ColumnWidth=15;     //設置單元格的寬度
range.Cells.Interior.Color=System.Drawing.Color.FromArgb(255,204,153).ToArgb();     //設置單元格的背景色
range.Borders.LineStyle=1;     //設置單元格邊框的粗細
range.BorderAround(XlLineStyle.xlContinuous,XlBorderWeight.xlThick,XlColorIndex.xlColorIndexAutomatic,System.Drawing.Color.Black.ToArgb());     // 給單元格加邊框
range.EntireColumn.AutoFit();     //自動調整列寬
Range.HorizontalAlignment= xlCenter;     // 文本水平居中方式
Range.VerticalAlignment= xlCenter     //文本垂直居中方式
Range.WrapText=true;     //文本自動換行
Range.Interior.ColorIndex=39;     //填充顏色為淡紫色
Range.Font.Color=clBlue;     //字體顏色
xlsApp.DisplayAlerts=false;     //保存Excel的時候,不彈出是否保存的窗口直接進行保存

   workbook.SaveCopyAs(temp);/**////填入完信息之後另存到路徑及文件名字

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();
}


輸出結果: