我一直在使用Microsoft.Office.Interop.Excel
库打开Excel,刷新一些查询并保存。我遇到的问题是,只有当每台计算机具有与PC上安装的项目中选择的Excel库相同的Excel库时,这才会起作用。
我看到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);
}
答案 0 :(得分:1)
您也可以使用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);
答案 1 :(得分:0)
通过刷新查询'我假设您的意思是Excel文件链接到某些数据源,并且您希望使用该数据源中的当前数据更新Excel文件的内容。
如果你希望那是"自动" (即你不会自己编写代码进行更新),那么我认为Excel是唯一可行的方法。我非常确定像NPOI(或EPPlus,或ClosedXML)这样的东西不会这样做。但是,如果您可以轻松查询数据源,则可以使用这些库自行将值插入电子表格。
由于您正在谈论多台计算机,因此我假设您正在构建部署到各种用户的加载项或EXE。在这种情况下,您可能希望针对最低支持的Excel版本进行构建。换句话说,您希望(比如说)Excel 2003或2007在您的开发机器上。 (如果你可以放弃对2003年的支持,你将使你的生活更轻松。)
如果您针对Excel 200x构建,那么它应该在以后的版本上运行正常。反过来情况并非如此。请注意,您不希望在开发计算机上拥有多个版本。