2014-10-29 9 views
1

Я создал простой файл Excel с помощью SpreadSheetGear. Если бы я сохранить его как файл XLSОткрытие файла xlsx, созданного с помощью SpreadSheetGear

workbook.SaveAs("file.xls", SpreadsheetGear.FileFormat.Excel8); 

и прикрепить его к электронной почте, я могу открыть его на свой телефон (протестировано как с iPhone и Android).

Если я сохранить его как XLSX файл

workbook.SaveAs("file.xlsx", SpreadsheetGear.FileFormat.OpenXMLWorkbook); 

и прикрепить его к электронной почте, я не могу открыть его на свой телефон.

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

Очевидно, что Excel сохраняет файл по-другому, чем SSG. Размер файла прикрепленного файла xlsx составляет 9 КБ. Когда я открываю его на своем компьютере и сохраняю его, размер нового файла составляет 24 КБ.

Некоторые из моих пользователей предпочитают формат xlsx. Есть ли что-нибудь, что я могу сделать, чтобы открыть открытое файловое хранилище SSG, как прикрепленный файл сгенерированный Excel?

ответ

3

iOS зависит от того, какие атрибуты присутствуют в данных рабочего листа формата файла Open XML для правильного анализа этих файлов. SpreadsheetGear не записывает эти атрибуты из-за того, что они указаны как необязательные в спецификации формата файла Open XML, а также, опустив их, уменьшает размер файла, как вы уже отметили. Excel по какой-либо причине всегда записывает эти необязательные атрибуты и другие сторонние компоненты, которые часто используют свое присутствие для правильной работы. SpreadsheetGear V5 добавил обходное решение, чтобы выписать эти атрибуты, включив опцию «Экспериментальный». Этот параметр был добавлен, поскольку поставщик OLE DB также демонстрирует это ошибочное поведение. Вы можете попробовать что-то вроде следующего и посмотреть, если это помогает в получении SpreadsheetGear лучше работать с вашим зрителем:

IWorkbookSet workbookSet = Factory.GetWorkbookSet(); 
workbookSet.Experimental = "OleDbOpenXmlWorkaround"; 
IWorkbook workbook = workbookSet.Workbooks.Open(@"C:\temp\BadWorkbook.xlsx"); 
workbook.SaveAs(@"C:\temp\GoodWorkbook.xlsx", FileFormat.OpenXMLWorkbook); 

Пожалуйста, смотрите SpreadsheetGear.IWorkbookSet. Experimental Для получения дополнительной информации об этой функции.

Из того, что я могу сказать, iOS/Andriod/etc часто также зависят от других определенных дополнительных функций, доступных в форматах файлов, которые SpreadsheetGear либо не поддерживает, либо не записывает по умолчанию. Например, iOS зависит от «кэша данных», хранящегося в диаграммах, для отображения точек данных в виде диаграмм, а поддержка SpreadsheetGear для записи этого кэша данных ограничена. Это может привести к тому, что графики не будут отображаться, как ожидалось, в iOS, Android и т. Д.

+0

Это сработало! Спасибо, хорошее объяснение. Я бы никогда не подумал об этом. – Daniel

Смежные вопросы