2015-08-18 63 views
0

Мне нужно экспортировать некоторые данные из нескольких таблиц в файл excel. Дело в том, что единственным рабочим расширением является «.xls», который слишком стар. Поэтому, когда я открываю этот файл, он отображается в защищенном режиме просмотра, даже если я сниму все флажки в опциях режима защищенного варианта Excel.Реализация fpSpreadsheet Lazarus

Я не знаю, почему я не могу сохранить в других расширений, как .xlsx, потому что, если я использую родную функцию, чтобы сохранить как .xlsx: STR_OOXML_EXCEL_EXTENSION или просто написать .xlsx это экономит, но не открывает документ. Показать это сообщение: Excel не может открыть файл 'file.xlsx', если формат или расширение недействительны. Проверьте, поврежден ли документ или расширение соответствует формату файла.

Это код, я использую для создания файла:

MyWorkbook := TsWorkbook.Create; 
     try 
     MyWorksheet := MyWorkbook.AddWorksheet('Orçamento'); 

И это один я использую, чтобы сохранить:

 MyWorkbook.WriteToFile(MyDir + orcamento + '.xls', OUTPUT_FORMAT, True); 
finally 
    MyWorkbook.Free; 

Единственный вариант я могу думать , использует другой пакет, Excel или OpenOffice могут помочь.

Настройки: Lazarus 1.4.2 с FPC 2.6.4 и 1.6.0 fpSpreadsheet, работает на Windows 7 64-бит.

+0

Пожалуйста, сообщите нам подробнее о том, почему вы не можете сохранить таблицу в других форматах, кроме '.xls' – Abelisto

+0

@Abelisto Я обновил свой вопрос – Will

ответ

1

Я не уверен, что содержит переменная или константа OUTPUT_FORMAT но если указать формат он должен быть один из них:

sfExcel2, sfExcel5, sfExcel8, sfOOXML, sfOpenDocument, 
sfCSV, sfHTML, sfWikiTable_Pipes, sfWikiTable_WikiMedia 

Так что если вы хотите сохранить как .xlsx вы могли бы сделать это (использовать sfOOXML как формат):

uses fpspreadsheet, fpstypes, xlsxooxml; 
//... 
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', sfOOXML, True); 

Вы также можете сделать это:

uses fpspreadsheet, fpstypes, xlsxooxml; 
//... 
MyWorkbook.WriteToFile(MyDir + orcamento + '.xlsx', True); 

это Виль l автоматически обнаруживает расширение .xlsx и сохраняет правильный формат.

Вам нужно включить xlsxooxml в свой раздел uses, потому что этот блок регистрирует xlsx-формат (автоматически).

+0

Спасибо, человек, это сработало. Для параметра OUTPUT_FORMAT установлено значение sfExcel5. – Will