背景:
在项目中,需要操作EXCEL 文档,本以为是OBA的应用,但其实不然。OBA是在EXCEL中嵌入.net应用插 件,而我们则是需要在SCSF中操作EXCEL。
我大致调查了一下,主要发现3种方式。
1:使用Microsoft.Office.Interop.Excel,调用EXCEL COM组件,操作EXCEL文件
2:使用OleDb 操作EXCEL数据源,进而利用ADO.net。
3:使用OPEN XML,访问EXCEL zip文件并使用DOM。
实现:
1:使用.NET 调用COM
////////////////////////
private static Microsoft.Office.Interop.Excel.Application xApp;
..
if (xApp == null)
xApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
Microsoft.Office.Interop.Excel.Workbook xBook = null;
xApp.Visible = false;
try
{
xBook = xApp.Workbooks._Open(@"c:\待发工资.xlsx", Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
Microsoft.Office.Interop.Excel.Worksheet xSheet = (Microsoft.Office.Interop.Excel.Worksheet)xBook.Sheets[1];
//Excel.Worksheet xSheet=(Excel.Worksheet)xApp.ActiveSheet;
//Microsoft.Office.Interop.Excel.Range rng1 = xSheet.get_Range("A1", Type.Missing);
Microsoft.Office.Interop.Excel.Range cell = (Microsoft.Office.Interop.Excel.Range) xSheet.Cells[2, 1];
string str = "";
for (int i = 2; cell.Value2 != null; i++)
{
str += cell.Value2.ToString() + ".";
cell = (Microsoft.Office.Interop.Excel.Range)xSheet.Cells[2, i];
}
MessageBox.Show(str);
xBook.Close(Microsoft.Office.Interop.Excel.XlSaveAction.xlDoNotSaveChanges, @"c:\待发工 资.xlsx", Missing.Value);
xApp.Quit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message.ToString());
}
///////////////////////