【IT168技术文档】
背景:
在ATBS项目中,需要操作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()); } ///////////////////////