Excel.Workbooks.Open завершается с HRESULT: 0x800A03EC в среде разработки - PullRequest
0 голосов
/ 31 октября 2018

Раньше Excel Interop был надежным инструментом. Сегодня это просто не будет работать. Я понимаю, что HRESULT чрезвычайно универсален и предоставляет очень мало контекста. Я рассмотрел другие вопросы, которые я суммирую:

  1. Файлы были повреждены.

  2. В файлах использовался английский язык за пределами США.

  3. В среде разработки он работал нормально, но в серверная среда.

Ничего из этого не применимо. Файл не поврежден. Прекрасно открывается в Excel. Он использует американский английский язык. Это не работает даже в среде разработки. Недавно мы перешли на использование Office 365 ProPlus, но я нашел документацию, в которой говорится, что текущее взаимодействие должно работать с Office 365. Я использую версию 15.0.0.0 DLL взаимодействия с этим кодом. Я использую Windows 10.0.17134 и Visual Studio 2017 Pro версии 15.8.8. Это консольное приложение, предназначенное для .NET Framework 4.6.1.

using System;
using System.IO;
using System.Reflection;
using Excel = Microsoft.Office.Interop.Excel;

namespace DERPA_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Excel.Application xlApp;
            Excel.Workbook xlWorkBook;
            string templateFilename = "template.xlsx";

            if (File.Exists(templateFilename))
            {
                try
                {
                    xlApp = new Excel.Application();
                    object misValue = Missing.Value;
                    xlWorkBook = xlApp.Workbooks.Open(templateFilename);
                    // Exception thrown here in the Open.
                    // Also tried this.  It didn't work either.
                    // xlWorkBook = xlApp.Workbooks.Open(templateFilename, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue, misValue);
                    xlWorkBook.Close(true, misValue, misValue);
                    xlApp.Quit();
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }
            }
        }
    }
}

Вот еще более простой пример. Создайте файл CSV с именем «test.csv», содержащий:

"Заголовок 1", "Заголовок2"
«Данные 1», «Данные 2»

using Excel = Microsoft.Office.Interop.Excel;
namespace DERPA_Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Excel.Application xlApp = new Excel.Application();
            Excel.Workbook xlWorkBook = xlApp.Workbooks.Open("test.csv");
        }
    }
}

Это то же самое поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...