Откройте файл Excel, используя Interop, используя С#

У меня есть этот код на С#, который используется для открытия файла 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


person Kezern    schedule 10.10.2016    source источник
comment
Я извиняюсь, что неправильно написал путь. Правильный путь — C:\\plantilla2.xlsx. Файл находится по этому пути.   -  person Kezern    schedule 10.10.2016
comment
Попробуйте установить oXL.Visible = true перед открытием книги. Вы можете увидеть сообщение об ошибке из Excel, которое даст вам подсказку. Или попробуйте открыть файл Excel в интерактивном режиме с помощью Excel. Также используйте Диспетчер задач, чтобы проверить, есть ли у вас еще запущенные скрытые экземпляры Excel, возможно, с предыдущего запуска вашего приложения.   -  person Joe    schedule 10.10.2016
comment
Вы можете попробовать отключить все надстройки Excel и посмотреть, возникает ли ошибка. Это решило это для меня.   -  person ltiveron    schedule 10.10.2016
comment
Это настоящий файл Excel или CSV/HTML с поддельным расширением xlsx?   -  person Panagiotis Kanavos    schedule 10.10.2016


Ответы (3)


Похоже, служба RPC не работает. Вы уверены, что служба «Удаленный вызов процедур (RPC)» здесь «Панель управления\Администрирование\Службы» имеет состояние «Работает»?

person Sergey Vaulin    schedule 10.10.2016

Я не знаю, что случилось. Я перезагрузил компьютер, и теперь он работает.

person Kezern    schedule 11.10.2016

Это должно помочь.

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

person Community    schedule 28.12.2016