Подтвердить что ты не робот

Экспорт таблицы HTML в Excel - не открывается в Office 2010

Я использую следующий код Javascript для генерации excel "на лету", который преобразует таблицу HTML в электронную таблицу.

Файл Excel не открывается в Office 2010, отображается пустое. Та же таблица открывается Openoffice. Что может быть проблемой? Связано ли это с encoding

function ExcelReport() {
              var tab_text = '<html xmlns:x="urn:schemas-microsoft-com:office:excel">';
              tab_text = tab_text + '<head><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>';
              tab_text = tab_text + '<x:Name>Test Sheet</x:Name>';
              tab_text = tab_text + '<x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet>';
              tab_text = tab_text + '</x:ExcelWorksheets></x:ExcelWorkbook></xml></head><body>';      
              tab_text = tab_text + "<table>";
              var headingTable = $('#h_tbl').clone();
              tab_text = tab_text + headingTable.html();
              tab_text = tab_text + '</table>';
              $('.c_tbl').each(function( index ) {
                    tab_text = tab_text + "<table>";
                    tab_text = tab_text + "<tr><td></td></tr><tr><td></td></tr>";
                    tab_text = tab_text + '</table>';
                    tab_text = tab_text + "<table>";
                    var exportTable = $(this).clone();
                    tab_text = tab_text + exportTable.html();
                    tab_text = tab_text + '</table>';
              });
              tab_text = tab_text + '</body></html>';
              var fileName = name + '.xls';
              var blob = new Blob([tab_text], { type: "application/vnd.ms-excel;charset=utf-8" })
              window.saveAs(blob, wo_var + ".xls");
            }

Когда я открываю excel в блокноте, код html выглядит следующим образом

<html xmlns:x="urn:schemas-microsoft-com:office:excel"><head><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></head><body><table>
        <tbody><tr><td>abc:</td></tr></tbody></table></body></html>

введите описание изображения здесь

4b9b3361

Ответ 1

У нас было слишком много жалоб от наших клиентов. Мы проследили его до исправления Excel OFffice Security KB3115262 - https://support.microsoft.com/en-us/kb/3115262, который вышел 12 июля 2016 года.

Чтобы обойти эту проблему, у нас были клиенты, внесшие изменения в свои Excel, чтобы разрешить файлы из Интернета.

Чтобы исправить: 1) Открыть Excel Перейти к Параметры файла

2) Нажмите Центр доверия → Настройки центра доверия

3) Перейдите в "Защищенный вид". есть 3 варианта, которые показывают, что все нажали

Отмените первый вариант, который читается - "Включить защищенный просмотр для файлов, происходящих из Интернета"

Это решило проблему. Возможно, это не лучшее решение. Я не уверен, почему этот конкретный KB сломал это, но я думаю, что, возможно, тот факт, что формат файла не ожидается, и этот параметр противоречит друг другу.

На компьютере у меня нет этого KB, все эти флажки отмечены и все еще работают нормально (не пусто, но запрашивает формат файла отличается), и я думаю, что показывает в защищенном виде.

Что привело нас к тому, что это не содержимое файла, мы заметили, что если мы сохраняем файл в блокноте или блокноте ++ без каких-либо изменений, файл ведет себя отлично, поэтому excel должен читать некоторое свойство файла, а не содержимое чтобы заблокировать его.

Ответ 2

Вы сохраняете файл с содержимым HTML как *.xls. Excel может открыть это, но будет нормально показывать предупреждающее сообщение:

Файл, который вы пытаетесь открыть, 'name.ext', находится в другом формате чем указано расширением файла. Убедитесь, что файл не поврежден и из надежного источника, прежде чем открыть файл. Вы хотите открыть файл сейчас?

Если это предупреждение не происходит, и файл не открывается, возможно,

DWORD Значение ExtensionHardening в HKEY_CURRENT_USER\Software\Microsoft\Office\<version number>\Excel\Security установлено на 2 в Windows Registry

Это означает: "Проверьте расширение имени файла и тип файла. Если они не совпадают, не открывайте файл".

См. https://support.microsoft.com/en-us/kb/948615.

Возможно, ваш администратор установил это с помощью параметра групповой политики. Если вы находитесь в административной сети, спросите своего администратора.

Если вы являетесь вашим администратором, найдите этот параметр реестра и измените его на 1 по умолчанию.

Ответ 3

Вместо этого:

Отмените первый вариант, который читает - "Включить защищенный просмотр для файлов, исходящих из Интернета", который небезопасен

Сделайте это:

Перейдите в раздел "Свойства файла" и нажмите "Разблокировать" (если вы знаете, что файл безопасен).

Изображение: Перейдите в раздел "Свойства файла" и нажмите "Разблокировать"

Ответ 4

Аналогичная проблема, мой код выгружается из GridView в файл XLS с помощью StringWriter, HTMLTextWriter и RenderControl.

Поскольку наш код ASP.NET работает в корпоративной интрасети, мы удалили следующие обновления по всей компании, вместо того, чтобы входить в 100 пользователей ПК и изменять их настройки.

Uninstalled:

  • Центр обновления Windows KB3115262 (Excel 2013)
  • Центр обновления Windows KB3115130 (Excel 2010)
  • Центр обновления Windows KB3115272 (Excel 2016/64 бит)

Это устранило нашу проблему, а также устранит ваши и другие, затронутые этими обновлениями.

Ответ 5

Для тех более параноиков безопасности я увидел еще один ответ на сайте SalesForce, который тоже должен работать - https://success.salesforce.com/answers#!/feedtype=SINGLE_QUESTION_DETAIL&dc=All&criteria=BESTANSWERS&id=9063A000000iTIyQAM

В основном маркировка сайта, который вы загружаете, безопасно.

Я сам не пробовал

В принципе откройте веб-сайт, на котором вы будете загружать файлы excel в Internet Explorer

Перейдите в Настройки настройки интернета Безопасность Доверенные сайты Места Добавить

Это должно добавить рассматриваемый сайт как разрешенный, а затем вы можете использовать любой браузер, который вы хотите, например. firefox/chrome и т.д.

Ответ 6

У меня была аналогичная проблема, интранет-мудрый. Экспорт Grid в HTML Excel внезапно прекратил работу, когда пользователь нажал кнопку "Открыть". Быстрый обходной путь, Сохранить и открыть раскрывающийся список или просто сохранить, затем откройте.

Мое исправление заключалось в том, чтобы изменить контент-расположение из прикрепленного к встроенному. Теперь пользователи получают старую всплывающую страницу, а не нижнюю, а open работают нормально.

Ответ 7

Возможные исправления проблемы:

Решение 1:

1) Введите Regedit в меню "Пуск"

2) Перейдите в реестр как,

В реестре: HKEY_CURRENT_USER\Software\Microsoft\Office\\Excel\Security

где =

 15.0 for Office 2013
 16.0 for Office 2016
 12.0 for Office 2010

создайте значение DWORD (32 бит) и назовите его: ExtensionHardening. Возможные значения:

0: Do not check the file name extension and
   the file type, and bypass the function of the warning message.

1: Check the file name extension and the file type.
   If they do not match, display the warning message.

2: Check the file name extension and the file
   type. If they do not match, do not open the file.

Используйте значение 1 в качестве значения.

Решение 2:

Щелкните правой кнопкой мыши на Excel → Свойства → Разблокировать → Хорошо.

UnblockExcel

SOlution 3

Удалите обновления:

Центр обновления Windows KB3115272 (Excel 2016/64 бит)

Центр обновления Windows KB3115262 (Excel 2013)

Центр обновления Windows KB3115130 (Excel 2010)

Для получения дополнительной информации о проблеме .please см. ссылку ниже. https://social.technet.microsoft.com/Forums/en-US/d2d84793-9920-45e3-baef-5027a4ac1ae0/kb3170008-for-office-2016-breaks-functionality-ms16088?forum=officeitpro

Ответ 8

Microsoft исправила Excel 9 августа, чтобы восстановить исходную функциональность. Прокрутите до 9 августа в этой теме для получения дополнительной информации: https://social.technet.microsoft.com/Forums/en-US/d2d84793-9920-45e3-baef-5027a4ac1ae0/kb3170008-for-office-2016-breaks-functionality-ms16088?forum=officeitpro

Обновление Excel исправило проблему для меня.