From a05a385c8d6859132c0642ba3d3d24057440139f Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Fri, 29 May 2015 17:57:05 +0000 Subject: [PATCH] fpspreadsheet: Fix too dense background fill of biff2 files in spreadsheet grid, now like in Excel. Read number formats from BIFF2 files (don't use 21 predefined formats any more). git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4160 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../fpspreadsheet/fpspreadsheetgrid.pas | 2 +- components/fpspreadsheet/xlsbiff2.pas | 20 ++++++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/components/fpspreadsheet/fpspreadsheetgrid.pas b/components/fpspreadsheet/fpspreadsheetgrid.pas index 642b4114d..c55ba56be 100644 --- a/components/fpspreadsheet/fpspreadsheetgrid.pas +++ b/components/fpspreadsheet/fpspreadsheetgrid.pas @@ -1380,7 +1380,7 @@ begin begin if Workbook.FileFormat = sfExcel2 then begin - CreateFillPattern(FillPatternBitmap, fsGray50, clBlack, Color); + CreateFillPattern(FillPatternBitmap, fsGray12, clBlack, Color); Canvas.Brush.Style := bsImage; Canvas.Brush.Bitmap := FillPatternBitmap; end else diff --git a/components/fpspreadsheet/xlsbiff2.pas b/components/fpspreadsheet/xlsbiff2.pas index 4a9bed11e..3d81a3249 100755 --- a/components/fpspreadsheet/xlsbiff2.pas +++ b/components/fpspreadsheet/xlsbiff2.pas @@ -298,7 +298,7 @@ end; procedure TsSpreadBIFF2Reader.AddBuiltInNumFormats; begin FFirstNumFormatIndexInFile := 0; - InternalAddBuiltInNumFormats(FNumFormatList, Workbook.FormatSettings); + //InternalAddBuiltInNumFormats(FNumFormatList, Workbook.FormatSettings); end; procedure TsSpreadBIFF2Reader.ReadBlank(AStream: TStream); @@ -430,13 +430,31 @@ end; {@@ ---------------------------------------------------------------------------- Reads the FORMAT record required for formatting numerical data -------------------------------------------------------------------------------} +(* procedure TsSpreadBIFF2Reader.ReadFORMAT(AStream: TStream); begin Unused(AStream); // We ignore the formats in the file, everything is known // (Using the formats in the file would require de-localizing them). +end;*) +procedure TsSpreadBIFF2Reader.ReadFormat(AStream: TStream); +var + len: byte; + fmtIndex: Integer; + fmtString: AnsiString; + nfs: String; +begin + // number format string + len := AStream.ReadByte; + SetLength(fmtString, len); + AStream.ReadBuffer(fmtString[1], len); + + // Add to the end of the list. + nfs := ConvertEncoding(fmtString, FCodePage, encodingUTF8); + NumFormatList.Add(nfs); end; + procedure TsSpreadBIFF2Reader.ReadFromStream(AStream: TStream); var BIFF2EOF: Boolean;