【问题标题】:Open Excel file usint Interop using C#使用C#打开Excel文件usint Interop
【发布时间】:2016-10-10 12:14:35
【问题描述】:

我有这段 C# 代码,用于打开 Excel 文件。

Excel.Application oXL = new Excel.Application();
Excel._Workbook oWB;

String filename = "C:\\plantilla2.xlsx";

oWB = oXL.Workbooks.Open(filename, 0, true, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

MessageBox.Show("FIN");

此代码两天前运行良好。我没有更改任何内容,现在在打开 excel 文件的行中出现错误。 首先我看到一条消息“Excel 正在尝试恢复信息”

然后我收到异常“远程过程调用错误。(Excepción de HRESULT: 0x800706BE)”

我不知道出了什么问题。我已经按照本网站的说明检查了参考资料。 http://csharp.net-informations.com/excel/csharp-open-excel.htm

【问题讨论】:

  • 很抱歉我拼错了路径。正确的路径是“C:\\plantilla2.xlsx”。文件位于该路径中。
  • 在打开工作簿之前尝试设置oXL.Visible = true。您可能会从 Excel 中看到一条错误消息,为您提供线索。或者尝试使用 Excel 以交互方式打开 Excel 文件。还可以使用任务管理器检查您是否有隐藏的 Excel 实例仍在运行,可能是从您上次运行应用程序时开始的。
  • 您可以尝试禁用所有 Excel 的加载项,看看错误是否仍然存在。这为我解决了。
  • 这是一个真实 Excel 文件还是带有伪造的xlsx 扩展名的CSV/HTML?

标签: c# excel


【解决方案1】:

看起来 RPC 服务已关闭。您确定“控制面板\管理工具\服务”中的“远程过程调用 (RPC)”服务处于“运行”状态吗?

【讨论】:

    【解决方案2】:

    我不知道发生了什么。我已经重新启动了计算机,现在它可以工作了。

    【讨论】:

      【解决方案3】:

      这应该会有所帮助。

      using System;
      using System.Drawing;
      using System.Windows.Forms;
      using Excel = Microsoft.Office.Interop.Excel; 
      
      namespace WindowsApplication1
      {
          public partial class Form1 : Form
          {
              public Form1()
              {
                  InitializeComponent();
              }
      
              private void button1_Click(object sender, EventArgs e)
              {
                  try
                  {
                      System.Data.OleDb.OleDbConnection MyConnection ;
                      System.Data.DataSet DtSet ;
                      System.Data.OleDb.OleDbDataAdapter MyCommand ;
                      MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\csharp.net-informations.xls';Extended Properties=Excel 8.0;");
                      MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
                      MyCommand.TableMappings.Add("Table", "TestTable");
                      DtSet = new System.Data.DataSet();
                      MyCommand.Fill(DtSet);
                      dataGridView1.DataSource = DtSet.Tables[0];
                      MyConnection.Close();
                  }
                  catch (Exception ex)
                  {
                      MessageBox.Show (ex.ToString());
                  }
              }
         }
      }
      

      查看此链接。

      http://csharp.net-informations.com/excel/csharp-excel-oledb.htm

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-08
        • 1970-01-01
        • 1970-01-01
        • 2013-09-18
        • 2020-09-23
        • 1970-01-01
        • 1970-01-01
        • 2014-10-19
        相关资源
        最近更新 更多