Добавить лист excel c
Я могу открыть файл, обновить его данные и перемещаться по существующим рабочим листам. Моя проблема в том, как добавить новые листы?
Но я опускаюсь ниже Исключение COM, и мой поиск в Google не дал мне никакого ответа.
Exception from HRESULT: 0x800A03EC Source is: "Interop.Excel"
Я надеюсь, что кто-нибудь сможет избавить меня от страданий.
Исключение: Исключение из HRESULT: 0x800A03EC Источник: "Interop.Excel" Спасибо за помощь.
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно.
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей.
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то.
Ответы 9
Вам нужно добавить ссылку на COM в вашем проекте в « Microsoft Excel 11.0 Object Library » - или другую подходящую версию.
Этот код работает для меня:
Note that you want to be very careful about properly cleaning up and releasing your COM object references. Included in that StackOverflow question is a useful rule of thumb: "Never use 2 dots with COM objects". In your code; you're going to have real trouble with that. My demo code above does NOT properly clean up the Excel app, but it's a start!
Некоторые другие ссылки, которые я нашел полезными при рассмотрении этого вопроса:
To use COM interop, you must have administrator or Power User security permissions.
Надеюсь, это поможет.
У меня есть исключение COMException при вызове Add (), если это файл XLSM.
Вы можете использовать OLEDB для создания файлов Excel и управления ими. Ссылки и примеры см. В этот вопрос.
Хотел бы поблагодарить вас за отличные ответы. @AR., У вас звезда и работает отлично. Вчера вечером я заметил, что Excel.exe не закрывается; поэтому я провел небольшое исследование и узнал, как освободить COM-объекты. Вот мой последний код:
Спасибо за твою помощь.
Вот пара вещей, которые я выяснил:
Вы не можете одновременно открывать более одного экземпляра одного и того же объекта. Например, если вы создаете новый объект листа Excel с именем xlsheet1 , вы должны освободить его перед созданием другого объекта листа Excel, например xlsheet2 . Кажется, что COM теряет объект и оставляет на сервере зомби-процесс.
Использование метода открытия, связанного с excel.workbooks , также становится трудным для закрытия, если у вас есть несколько пользователей, обращающихся к одному и тому же файлу. Вместо этого используйте метод Add, он работает так же хорошо, не блокируя файл. например. xlBook = xlBooks.Add("C:\location\XlTemplate.xls")
Поместите сборку мусора в отдельный блок или метод после освобождения COM-объектов.
COM определенно не лучший вариант. В частности, это бесполезно, если вы имеете дело с веб-средой .
Я успешно использовал следующие проекты с открытым исходным кодом:
ExcelPackage для форматов OOXML (Office 2007)
NPOI для формата .XLS (Office 2003)
Do not forget to include Reference to Microsoft Excel 12.0/11.0 object Library
Это то, что я использовал, чтобы добавить дополнительный рабочий лист
У меня была аналогичная проблема надстройки уровня приложения в VSTO, исключение HRESULT: 0x800A03EC при добавлении нового листа.
The error code 0x800A03EC (or -2146827284) means NAME_NOT_FOUND; in other words, you've asked for something, and Excel can't find it.
Затем я наконец понял, что ThisWorkbook вызвал исключение. ActiveWorkbook прошел нормально.
Другие вопросы по теме
Пример построения автоматизации MFC (для доступа к Excel с помощью автоматизации OLE). Не могу скомпилировать
Похожие вопросы
Settings.Default.
Находите ответы на сложные технические вопросы по программированию, с которыми сталкиваются инженеры по всему миру в своей ежедневной практике на сайте RedDeveloper.
Классы Worksheet и Worksheet содержат методы и свойства, применяемые для выполнения задач с листами.
Задача | Процедура |
---|---|
Добавление нового листа в книгу. | Как программно добавлять новые листы в книги |
Создание копии листа в указанном месте в книге. | Руководство. программное копирование листов |
Удаление указанного листа. | Руководство. Программное удаление листов из книг |
Перемещение фрагмента, выделенного пользователем, на указанный лист. | Как программно выбрать листы |
Выполнение итерации по коллекции всех листов. | Руководство. Программное перечисление всех листов в книге |
Предварительный просмотр и печать листа. | Как программно печатать листы |
Перемещение листа на новое место в книге. | Руководство. Программное перемещение листов в книгах |
Изменение видимости одного или нескольких листов. | Как программно скрыть листы |
Блокировка возможности изменения всего листа или его части. | Как программно защитить листы |
Снятие блокировки с листа. | Как программно снять защиту с листов |
Добавление и удаление комментариев. | Руководство. Программное добавление и удаление комментариев на листе |
Отображение или скрытие всех комментариев. | Как программно отображать комментарии на листе |
Создание групп на листах. | Руководство. программное группирование строк на листе |
Выделение строки полужирным только в том случае, когда она содержит выбранную ячейку. | Руководство. Программное изменение форматирования в строках листа, содержащих выбранные ячейки |
Копирование данных и форматирование между листами | Руководство. программное копирование данных и форматирование на листах |
Проверка орфографии на листах. | Руководство. Программная проверка орфографии на листах |
Сортировка данных в именованных диапазонах и объектах списка. | Руководство. Программная сортировка данных на листах |
дополнительные сведения о Excel задачах и объектной модели Excel см. в разделе общие сведения о модели объектов Excel.
В некоторых случаях способы выполнения этих задач в надстройках VSTO отличаются от способов, которые применяются в настройках на уровне документа.
Я могу открыть файл и обновить его данные и перейти через существующие листы. Моя проблема в том, как я могу добавить новые листы?
но я получаю ниже исключение COM и мой гуглинг не дал мне никакого ответа.
исключение из HRESULT: 0x800A03EC источник: "Interop.Excel"
Я надеюсь, что кто-то, возможно, сможет избавить меня от моих страданий.
вам нужно добавить ссылку COM в свой проект в " Microsoft Excel 11.0 Object Library " - или любая соответствующая версия.
этот код работает для меня:
обратите внимание, что вы хотите быть очень осторожны, о Правильная очистка и освобождение ссылок на COM-объекты. В этот вопрос StackOverflow включено полезное эмпирическое правило: "никогда не используйте 2 точки с COM-объектами". В вашем коде; у вас будет настоящий с этим проблемы. мой демо-код выше не правильно очистить приложение Excel, но это начало!
некоторые другие ссылки, которые я нашел полезными при рассмотрении этого вопроса:
чтобы использовать com-взаимодействие, вы должны иметь безопасность администратора или пользователя Power разрешения.
надеюсь, что это поможет.
хочу поблагодарить вас за отличные ответы. @АР., ваша звезда, и она отлично работает. Вчера вечером я заметил, что . --1--> не закрывался; поэтому я провел некоторые исследования и узнал о том, как освободить COM-объекты. Вот мой окончательный код:
Спасибо за вашу помощь.
не забудьте указать ссылка to Microsoft Excel 12.0/11.0 object Library
вы можете использовать OLEDB для создания и управления файлами Excel. См.этот вопрос для ссылок и образцы.
вот пара вещей, которые я понял:
вы не можете открыть несколько экземпляров одного и того же объекта одновременно. Например, если вы создаете экземпляр нового объекта листа excel с именем xlsheet1 вы должны освободить его перед созданием другого объекта листа excel ex xlsheet2 . Похоже, COM теряет след объекта и оставляет зомби-процесс на сервере.
использование метода open, связанного с excel.workbooks также становится трудно закрыть, если у вас есть несколько пользователей, обращающихся к одному и тому же файлу. Вместо этого используйте метод Add, он работает так же хорошо, не блокируя файл. например. xlBook = xlBooks.Add("C:\location\XlTemplate.xls")
поместите сборку мусора в отдельный блок или метод после освобождения COM-объектов.
COM это определенно не лучший способ пойти. Более конкретно, это не идет, если вы имеете дело с веб-средой.
Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.
Наработки очень пригодились в работе для формирования отчетности.
Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.
Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.
Далее создаем псевдоним для работы с Excel:
using Excel = Microsoft.Office.Interop.Excel;
Расстановка рамок.
Расставляем рамки со всех сторон:
Цвет рамки можно установить так:
Выравнивания в диапазоне задаются так:
Формулы
Определим задачу: получить сумму диапазона ячеек A4:A10.
Для начала снова получим диапазон ячеек:
Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);
Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:
string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.
Выделение ячейки или диапазона ячеек
Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:
Авто ширина и авто высота
Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:
Получаем значения из ячеек
Чтобы получить значение из ячейки, используем такой код:
Добавляем лист в рабочую книгу
Чтобы добавить лист и дать ему заголовок, используем следующее:
Добавление разрыва страницы
Сохраняем документ
Как открыть существующий документ Excel
Комментарии
Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.
Далее заходим в редактор Visual Basic и смотрим код, который туда записался:
Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:
Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.
Чтобы выбрать лист, выполните sheetData.Select(Type.Missing); где sheetData это нужный лист.
Как прочитать данные из ячейки excel,и записать эти данные в sql server?
Добрый день.
Отправил на почту.
Добрый день.
А мне можно тоже самое?)
Вы можете записать макрос на изменение цвета в Visual Basic и списать получившийся код. Затем использовать его в своей программе.
Здравствуйте.
Можете подсказать, как «заставить» приложение работать с разными версиями MS Office? На машине разработчика стоит Office 2010, при запуске на машине с 2003-м — увы — ошибка.
Microsoft.Office.Interop.Excel это довольно старый способ работать с Excel документами.
Что касается версии Office 2003, то он использует совсем другой драйвер.
Соответственно версия Microsoft.Office.Interop.Excel.dll нужна старая, плюс драйвер microsoft jet 4.0, который на новых системах (Win 8, 10) работает неправильно.
Единственное, что могу посоветовать, так это скачать Microsoft Office Compatibility Pack для Office 2003, чтобы научить его открывать xslx документы.
А в своей программе использовать не Interop.Excel, а библиотеку EPPlus. Она работает с excel документами, используя технологию OpenXml и не надо париться по поводу драйверов.
Код будет очень похож на Interop.Excel-ный.
Очень полезная штука, спасибо за удобное представление информации на Вашем сайте!
Скажите пожалуйста, как прочитать данные из ячейки Excel и записать их в SQL Server?
Привожу фрагменты кода, которые искал когда-то сам для работы с Excel документами.
Наработки очень пригодились в работе для формирования отчетности.
Прежде всего нужно подключить библиотеку Microsoft.Office.Interop.Excel.
Visual Studio здесь довольно старой версии. Если у вас версия новая, отличаться будет только вид окна.
Далее создаем псевдоним для работы с Excel:
using Excel = Microsoft.Office.Interop.Excel;
Расстановка рамок.
Расставляем рамки со всех сторон:
Цвет рамки можно установить так:
Выравнивания в диапазоне задаются так:
Формулы
Определим задачу: получить сумму диапазона ячеек A4:A10.
Для начала снова получим диапазон ячеек:
Excel.Range formulaRange = sheet.get_Range(sheet.Cells[4, 1], sheet.Cells[9, 1]);
Далее получим диапазон вида A4:A10 по адресу ячейки ( [4,1]; [9;1] ) описанному выше:
string adder = formulaRange.get_Address(1, 1, Excel.XlReferenceStyle.xlA1, Type.Missing, Type.Missing);
Теперь в переменной adder у нас хранится строковое значение диапазона ( [4,1]; [9;1] ), то есть A4:A10.
Выделение ячейки или диапазона ячеек
Так же можно выделить ячейку или диапазон, как если бы мы выделили их мышкой:
Авто ширина и авто высота
Чтобы настроить авто ширину и высоту для диапазона, используем такие команды:
Получаем значения из ячеек
Чтобы получить значение из ячейки, используем такой код:
Добавляем лист в рабочую книгу
Чтобы добавить лист и дать ему заголовок, используем следующее:
Добавление разрыва страницы
Сохраняем документ
Как открыть существующий документ Excel
Комментарии
Для этого в настройках ленты надо добавить пункт «Разработчик». Далее начинаем запись макроса, производим действия и останавливаем запись.
Далее заходим в редактор Visual Basic и смотрим код, который туда записался:
Данный метод так же может оказать помощь в формировании относительных формул, например, выполнить сложение чисел, находящиеся слева от текущей ячейки на 4 столбца, и т.п. Пример:
Так же во время работы может возникнуть ошибка: метод завершен неверно. Это может означать, что не выбран лист, с которым идет работа.
Чтобы выбрать лист, выполните sheetData.Select(Type.Missing); где sheetData это нужный лист.
Читайте также: