【问题标题】:Quickest Way To Open Excel打开 Excel 的最快方法
【发布时间】:2015-06-12 15:02:29
【问题描述】:

我一直在使用Microsoft.Office.Interop.Excel 库打开 Excel,刷新一些查询并保存。我遇到的问题是,这只有在每台计算机都具有与 PC 上安装的项目中选择的 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);
    }

【问题讨论】:

标签: c# excel npoi


【解决方案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);

【讨论】:

    【解决方案2】:

    “刷新查询”我假设您的意思是 Excel 文件链接到某个数据源,并且您希望使用该数据源中的当前数据更新 Excel 文件的内容。

    如果您希望它是“自动的”(即您不编写代码来自己更新),那么我认为 Excel 是唯一的方法。我很确定像 NPOI(或 EPPlus 或 ClosedXML)之类的东西不会那样做。但是,如果您可以轻松地查询数据源,您或许可以使用这些库将值插入到电子表格中。

    由于您谈论的是多台计算机,我假设您正在构建一个加载项或一个部署到不同用户的 EXE。在这种情况下,您可能希望针对支持的最低版本的 Excel 进行构建。换句话说,您希望(比如说)在您的开发机器上安装 Excel 2003 或 2007。 (如果您可以放弃对 2003 年的支持,您的生活将会变得更加轻松)。

    如果您针对 Excel 200x 构建,那么它应该在更高版本上运行良好。相反,情况并非如此。请注意,您不希望在您的开发机器上拥有多个版本。

    【讨论】:

    • 使用 COM 引用,您一次只能安装 1 个引用。所以我一直无法找到一种方法来构建 2003 年并让它在 2007 年开放,反之亦然。因此,我正在研究其他 .dll 中的一个。
    • 是的,但是 COM 组件往往是向后兼容的,因此如果您引用了 1.x 版并且用户拥有 2.x 版,它仍然可以工作。
    • 根据我的经验没有。例如,如果我使用 Microsoft Excel 12.0 对象库并像这样实例化 Excel,如果用户没有安装 Excel 2007,它每次都会出错。公共静态 Excel.Application oXL; oXL = new Excel.Application(); oXL.Visible = true; oXL.DisplayAlerts = 假; oXL.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityLow;
    • 它应该可以工作。你是如何部署你的EXE的?您需要确保将您构建的 Excel 版本中的主互操作程序集复制到部署文件夹,而不是依赖 GAC 中更新版本的 PIA。
    • 我使用的是 Windows 窗体。但没有确保将我的 Excel 版本中的 PIA 复制到部署文件夹中。我该怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多