Экспорт таблицы 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>
![введите описание изображения здесь]()
Ответы
Ответ 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 исправило проблему для меня.