Откройте книгу Excel в C # - PullRequest
1 голос
/ 04 октября 2009

При попытке открыть лист Excel через приложение C# я сталкиваюсь со странной проблемой. он использует что-то вроде следующего, в то время как templatePath, например, C:\template.xls.

Workbook excel_workbook = this.excel.Workbooks.Open(templatePath,
mMissingValue, false, mMissingValue, mMissingValue, mMissingValue, mMissingValue,
mMissingValue, mMissingValue, mMissingValue, mMissingValue,
mMissingValue, mMissingValue, mMissingValue, mMissingValue);

Затем он включает объект excel_workbook в некоторых операциях. Проблема в том, что excel_workbook.name = template1, а не шаблон, что приводит к отображению диалогового окна Save As при нажатии на кнопку Сохранить. Такое поведение нарушает рабочий процесс с точки зрения бизнеса.

Кто-нибудь поможет в этом? Отмечая, что другие листы работают правильно.

Ответы [ 3 ]

0 голосов
/ 04 октября 2009

Нет способа предотвратить отображение диалоговых окон в Excel (или другом приложении Office). На самом деле, Microsoft не рекомендует использовать приложение Office в серверных сценариях. На рынке есть отличные сторонние компоненты, которые выполняют ту же работу (или даже лучше). Из сравнительного тестирования, которое я провел около года назад, Spire.XLS для .NET является лучшим с точки зрения следующих аспектов: 1. Чтение / запись Excel 2. Поддержка встраивания изображений 3. Размер файла Excel в результате очень маленький 4. Удобный API и очень похожий на Office 5. Многопоточная и многопроцессная поддержка

Подробнее: http://www.e -iceblue.com / XLS / xlsintro.htm

0 голосов
/ 05 октября 2009

Вы явно передаете 'false' для параметра 'ReadOnly', поэтому это поведение странно.

У меня есть две идеи:

(1) Вы уверены, что ваша книга представляет собой файл .XLS, а не .XLT? если это .XLT, как в «C: \ template.xlt» вместо «C: \ template.xls», то поведение, которое вы видите, является НОРМАЛЬНЫМ, потому что ваша книга открывается как шаблон. Измените расширение на «.XLS», и вы получите желаемое поведение.

(2) Если вы не можете заставить его вести себя так, как вам нужно, измените процедуру на «Workbooks.Open», затем немедленно вызовите «Workbooks.SaveAs» и задайте имя и / или путь к файлу рабочей книги в любом месте вы хотите. После этого любой вызов пользователем «Сохранить» (или с помощью кода) приведет к сохранению книги без открытия диалогового окна «Сохранить как».

Обновление

Хорошо, другие мысли:

Вы должны попытаться открыть книгу вручную, а затем попытаться сохранить ее. У тебя такая же проблема? Происходит ли это, когда эта рабочая книга является единственной открытой книгой или только когда открыты другие? Помогает ли переименование рабочей книги?

Суть в том, что это действительно звучит как некое странное разложение. Если ничего из вышеперечисленного не принесет ничего интересного - или, возможно, даже если они это сделают - вы, вероятно, захотите начать с новой рабочей книги. Начиная с пустой книги, присвойте ей то же имя и поместите в то же место. Работает ли это сейчас (по крайней мере, с точки зрения открытия и сохранения). Затем попробуйте добавить свои данные и другие аспекты к нему. Это будет работать, но вы сможете восстановить эту книгу и заставить ее работать.

- Майк

0 голосов
/ 04 октября 2009

Я не уверен, как заставить Excel не отображать диалоговое окно, но вы можете попробовать использовать SpreadsheetGear для .NET или другой компонент .NET вместо автоматизации Excel, чтобы избежать подобных проблем - и, скорее всего получить некоторое улучшение производительности.

Вы можете посмотреть живые образцы ASP.NET здесь и загрузить бесплатную пробную версию здесь , если хотите попробовать.

Отказ от ответственности: я владею SpreadsheetGear LLC

...