摘要:[c#] 控制Excel方式
C#控制Excel的方法比起VBA直覺許多
缺點是API函數的參數太多
而且功能不好搜尋
物件分層如下
1. Excel Application層 - 代表控制Excel的應用程式,請永遠保持唯一
using Excel = Microsoft.Office.Interop.Excel;
public static Excel.Application xlApp = null;
xlApp = new Excel.ApplicationClass();
// 第二層
xlApp.Quit();
2. Excel WorkBook層 - 代表一個Excel檔案
因為參數很多很難用,建議覆寫這些API
public static Excel.Workbook openWorkBook(string path)
{
return xlApp.Workbooks.Open(path, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
}
public static void saveAsWorkBook(Excel.Workbook wb, string path)
{
wb.SaveAs(path, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
}
public static void closeWorkBook(Excel.Workbook wb)
{
wb.Close(false, Type.Missing, Type.Missing);
}
public static Excel.Workbook getWorkBook(int index)
{
if (index > 0 && index <= xlApp.Workbooks.Count)
{
return xlApp.Workbooks[index];
}
return null;
}
3. Excel WorkSheet層 - 代表Excel檔案內的一個工作表
指定某個工作表的方法
public static Excel.Worksheet getWorkSheet(Excel.Workbook wb, int index)
{
if (index > 0 && index <= wb.Worksheets.Count)
{
return wb.Worksheets[index] as Excel.Worksheet;
}
return null;
}
4. Excel Range層 - 代表工作表內一塊範圍的欄位
注意欄位從1,1開始
這是一塊範圍
Excel.Range raArea = ((Excel.Range)ws.get_Range(ws.Cells[1,1],ws.Cells[2,2]));
也可以是單一個格(Cell)
Excel.Range raOne = (Excel.Range)ws.Cells[row, column];
5. 格式設定
Excel.Range ra = ((Excel.Range)ws.Cells[row, column]);
顏色型態必須是整數
ra.Interior.Color = ColorTranslator.ToOle(color);
置中
ra.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
ra.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
欄寬
ra.ColumnWidth = 25;
自動調整欄寬
ra.Columns.AutoFit();
細外框線
ra.Borders.Weight = Excel.XlBorderWeight.xlThin;
字型
ra.Columns.Font.Name = "Arial";
欄位值的文字表示(例如00:00:00)
ra.Text
欄位真正的值(但是值是47000)
ra.Value2
以上功能應該可以滿足輸出報表的實現