Экспорт в Excel из C # - PullRequest
       8

Экспорт в Excel из C #

1 голос
/ 12 мая 2011

Я пытаюсь записать данные в Excel из c #, но при отладке у меня есть исключение:

Невозможно привести объект COM типа 'System .__ ComObject' к типу интерфейса. 'Microsoft.Office.Interop.Excel.Range. Эта операция не удалась, потому что QueryInterface вызов на COM компонент для интерфейса с IID '{00020846-0000-0000-C000-000000000046} не удалось из-за следующей ошибки: Интерфейс не создан (Исключение от HRESULT: 0x80004002 (E_NOINTERFACE)).

Код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
namespace ConsoleApplication3
{
   class Program
  {
    static void Main(string[] args)
    {
        Excel.Application excelapp;
        Excel.Window excelWindow;
        Excel.Workbooks excelappworkbooks;
        Excel.Workbook excelappworkbook;
        Excel.Sheets excelsheets;
        Excel.Worksheet excelworksheet;
        Excel.Range excelcells;
        excelapp = new Excel.Application();
        excelapp.Visible = true;

        excelappworkbooks = excelapp.Workbooks;

        excelappworkbook = excelapp.Workbooks.Open(@"C:\Documents and Settings\дима\Мои документы\Visual Studio 2010\Projects\ConsoleApplication3\ConsoleApplication3\bin\Debug\a.xls",
                           Type.Missing, Type.Missing, Type.Missing,
         "WWWWW", "WWWWW", Type.Missing, Type.Missing, Type.Missing,
          Type.Missing, Type.Missing, Type.Missing, Type.Missing,
          Type.Missing, Type.Missing);

        excelsheets = excelappworkbook.Worksheets;

        excelworksheet = (Excel.Worksheet)excelsheets.get_Item(1);
        excelcells = excelworksheet.get_Range("A1", "A1");

        excelcells.Value2 = 10.5;
       }
    }
  }
 }

Ответы [ 4 ]

1 голос
/ 28 мая 2011

выглядит как конфликт библиотеки типов.возможно у вас установлено несколько версий.проверьте, есть ли у вас ссылка на нужный вам тип lib

9.0 Excel 2000

10.0 Excel 2002

11.0 Excel 2003

12.0 Excel 2007

14.0 Excel 2010

после изменения ссылки очистите решение и выполните полную перекомпиляцию.

0 голосов
/ 13 мая 2011

Можете ли вы попробовать следующее и дайте мне знать.Следующий код должен работать в C # 3.0

excelcells = excelworksheet.get_Range("A1", Type.Missing);

Если вы используете C # 4.0, используйте следующее

excelcells = excelworksheet.get_Range("A1");

Также всегда пишите код с блоком try / catch.

0 голосов
/ 13 мая 2011

Попробуйте: Используйте «Добавить» Удаление программ> Перейдите на вкладку «Изменение или удаление программ» Перейдите в Microsoft Office профессиональный 2003. Нажмите ссылку «Щелкните здесь для получения информации о поддержке».Используйте кнопку восстановления.

Это сработало для меня.

0 голосов
/ 12 мая 2011

Это не совсем прямой ответ на вопрос, но я видел, как многие люди испытывают трудности с управлением Excel через интерфейс COM.

Я получил библиотеку FlexCel от TMS Software , которая позволяет вам создавать или манипулировать рабочими листами Excel полностью в коде, даже не устанавливая Excel на машину.

Он также имеет множество других полезных функций (написание PDF-файлов, создание сложных отчетов из шаблонов Excel и т. Д. И т. Д.)

Я должен отметить, что у меня нет связи с компанией, кроме того, что я довольный пользователь.

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