最快的方式打开Excel

我一直在使用Microsoft.Office.Interop.Excel库打开Excel,刷新一些查询并保存。 我遇到的问题是这只会工作,如果每台计算机具有相同的Excel库中所选的PC上安装的项目。

我看到NPOI可以http://npoi.codeplex.com/documentation读写数据到Excel,但是如何更简单的打开/刷新/保存任务,NPOI能够处理这个问题呢?

如果你使用这种语法,似乎我可以打开我的Excel文件,但刷新查询和保存呢?

 using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; private void button1_Click(object sender, EventArgs e) { HSSFWorkbook hssfwb; using (FileStream file = new FileStream(@"c:\test.xls", FileMode.Open, FileAccess.Read)) { hssfwb= new HSSFWorkbook(file); } 

你也可以使用OLEDB适配器

 System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source = " + excelfilepath+ "; Extended Properties = \"Excel 8.0;HDR=NO;IMEX=1\";"); /*for office 2007 connection*/ conn.Open(); string strQuery = "SELECT * FROM [" + Table + "]"; System.Data.OleDb.OleDbDataAdapter adapter = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); System.Data.DataTable ExcelToDataTable = new System.Data.DataTable(); adapter.Fill(ExcelToDataTable); 

通过“刷新查询”,我假定你的意思是Excel文件链接到某个数据源,并且你想用来自该数据源的当前数据来更新Excel文件的内容。

如果你希望这是“自动”(即你不写代码来做这个更新自己),那么我认为Excel是唯一的出路。 我很确定,像NPOI(或EPPlus,或ClosedXML)不会这样做。 但是,如果可以轻松查询数据源,则可以使用这些库自行将值插入到电子表格中。

由于您正在讨论多台计算机,因此我认为您正在构build一个加载项或部署到各种用户的EXE。 在这种情况下,您可能需要针对您可以支持的最低版本的Excel进行构build。 换句话说,你想在你的开发机器上(比如说)Excel 2003或2007。 (如果你放弃对2003年的支持,你会让你的生活变得更容易)。

如果您使用Excel 200x构build,那么它应该在更高版本上运行良好。 相反,情况并非如此。 请注意,您不希望在开发计算机上安装多个版本。