fpspreadsheet: Add support for format xlsm

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4967 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2016-07-14 17:47:48 +00:00
parent 77e0cb052a
commit 5782410686
3 changed files with 28 additions and 10 deletions

View File

@ -253,14 +253,31 @@ end;
function TsSpreadFormatRegistry.GetAllExcelFilesMask(AExtSeparator: Char): String;
var
j: Integer;
L: TStrings;
data: TsSpreadFormatData;
ext: String;
begin
L := TStringList.Create;
try
// good old BIFF...
if (IndexOf(ord(sfExcel8)) <> -1) or
(IndexOf(ord(sfExcel5)) <> -1) or
(IndexOf(ord(sfExcel2)) <> -1) then L.Add('*.xls');
if (IndexOf(ord(sfOOXML)) <> -1) then L.Add('*.xlsx');
// Excel 2007+
j := IndexOf(ord(sfOOXML));
if j <> -1 then
begin
data := TsSpreadFormatData(FList[j]);
for j:=0 to data.FileExtensionCount-1 do
begin
ext := data.FileExtension[j];
if L.IndexOf(ext) = -1 then
L.Add('*' + ext);
end;
end;
L.Delimiter := AExtSeparator;
L.StrictDelimiter := true;
Result := L.DelimitedText;
@ -363,7 +380,7 @@ function TsSpreadFormatRegistry.GetFormatArrayFromFileName(
APriorityFormat: TsSpreadFormatID = sfidUnknown): TsSpreadFormatIDArray;
var
idx: Integer;
i, n: Integer;
i, j, n: Integer;
ext: String;
data: TsSpreadFormatData;
begin
@ -385,13 +402,15 @@ begin
faRead : if data.ReaderClass = nil then Continue;
faWrite : if data.WriterClass = nil then Continue;
end;
if Lowercase(data.FileExtension[0]) = ext then
begin
Result[n] := data.FormatID;
inc(n);
end;
for j:=0 to data.FileExtensionCount-1 do
if Lowercase(data.FileExtension[j]) = ext then
begin
Result[n] := data.FormatID;
inc(n);
end;
end;
SetLength(Result, n);
if APriorityFormat <> sfidUnknown then

View File

@ -9,7 +9,6 @@
<Version Value="11"/>
<PathDelim Value="\"/>
<SearchPaths>
<OtherUnitFiles Value="."/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>

View File

@ -2919,7 +2919,7 @@ begin
InitCell(lCell);
value := varNull;
styleCell := nil;
Workbook.OnWriteCellData(Workbook, r, c, value, styleCell);
Workbook.OnWriteCellData(FWorkbook, r, c, value, styleCell);
if styleCell <> nil then
lCell := styleCell^;
lCell.Row := r;
@ -4706,7 +4706,7 @@ initialization
// Registers this reader / writer on fpSpreadsheet
sfidOOXML := RegisterSpreadFormat(sfOOXML,
TsSpreadOOXMLReader, TsSpreadOOXMLWriter,
STR_FILEFORMAT_EXCEL_XLSX, 'OOXML', [STR_OOXML_EXCEL_EXTENSION]
STR_FILEFORMAT_EXCEL_XLSX, 'OOXML', [STR_OOXML_EXCEL_EXTENSION, '.xlsm']
);
end.