Commit Graph

205 Commits

Author SHA1 Message Date
11772b0156 fpspreadsheet: Fix ooxml reader crashing for files having no shared strings table.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3379 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-25 16:46:39 +00:00
005434006f fpspreadsheet: Split shared code for ooxml and ods readers off into new unit fpsxmlcommon.pas
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3378 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-25 16:31:34 +00:00
8d4572c39d fpspreadsheet: Initial implementation of an OOXML reader (some files still crashing). Add ooxmlread demo to examples folder. Fix spready demo's incorrect *.xlsx file filter.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3374 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-24 22:22:26 +00:00
7f8e8fb312 fpspreadsheet: Rename virtual mode event handler OnNeedCellData to OnWriteCellData. Add another virtual mode event handler for reading, OnReadCellData.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3370 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-23 21:51:06 +00:00
064dd6aba2 fpspreadsheet: Extend TBufStream for reading. Rename workbook's WritingOptions to Options, and the option flags from woXXXX to boXXXX. Use boBufStream (former woBufStream) to activate TBufStream for reading of xls and ods. Speed up reading of biff2 by factor 3 (rel to commit before prev one). Fix pile-up of temporary files when saving ods.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3357 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-22 15:59:29 +00:00
ba37ace85f fpspreadsheet: Read entire biff record of label and number cells to speed up reading (30% improvement for biff2). Numerous clean-up, mostly debugger settings.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3355 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-21 20:33:25 +00:00
7a3a9060e9 fpspreadsheet: Fix memory leak in virtual mode due to incorrectly initialized strings in the cell record.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3352 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-20 18:19:43 +00:00
08987b52c8 fpspreadsheet: Use TBufStream as general-purpose stream if woBufStream is set in Worksheet.WritingOptions. woBufStream replaces woSaveMemory. Results in a significant speed enhancement for biff2 (64000x100 cells -> 31 sec without, 1.7 sec with woBufStream).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3337 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-19 13:23:12 +00:00
7f6277ca08 fpspreadsheet: Add unit fpsstreams containing a buffered stream for speed-up of writing in virtual mode.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3331 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-18 22:48:38 +00:00
4c723b9fc3 fpspreadsheet: Convert some more biff methods such records are written in a single block (biff2: WriteLabel, WriteNumber, all: WriteFormat, WriteBlank, WriteColInfo).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3325 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-15 21:00:49 +00:00
6d4175c72a fpspreadsheet: Writing of date/time values to xlsx files. Date/time formats working.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3322 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-15 15:16:46 +00:00
e3c0eb2dc0 fpspreadsheet: Write custom row heights and column widths to xlsx files. Works in virtual mode also.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3320 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-15 13:31:45 +00:00
3f292f5e99 fpspreadsheet: Writing of number formats for xlsx (date/time not working yet)
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3318 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-14 20:47:53 +00:00
9607fc8e88 fpspreadsheet: Extend the event OnNeedCellData by a template cell which can be used for formatting when saving a file in virtual mode.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3317 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-14 15:04:04 +00:00
dc1d5d038a fpspreadsheet: Add wordwrap to writing of xlsx. Fix some minor issues forgotten with xlsx border and background color.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3316 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-14 07:58:45 +00:00
f596a181b3 fpspreadsheet: Support for writing cell border (on/off, linestyle, color) and background color to xlsx files.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3315 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-13 22:09:27 +00:00
3d7c3d06e3 fpspreadsheet: Implement writing of vertical and horizontal text alignment for xlsx files.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3314 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-13 15:23:07 +00:00
89ffb05a1c fpspreadsheet: Implement writing of text rotation for xlsx files
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3313 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-13 14:58:12 +00:00
9d2d62542b fpspreadsheet: Implement font support for the OOXML writer (font type, size, style, color).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3312 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-12 22:12:38 +00:00
36658107bc fpspreadsheet: Fix regression in previous commit (usage of nil in WriteCellCallback). Write font list to styles.xml.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3310 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-11 22:43:00 +00:00
e6e961d51f fpspreadsheet: Add WriteBlank to TsSpreadOOXMLWriter to standardize code.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3309 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-11 20:00:49 +00:00
4143334384 fpspreadsheet: Fix spans typo in xlsxooxml.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3308 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-11 19:36:17 +00:00
231b127041 fpspreadsheet: Implement virtual mode for all biff file formats. Add record limitations with writer-specific max row and col counts: a file is not written to a particular file format if it exceeds the limitations of the file format.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3307 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-11 13:20:14 +00:00
e2391c142b fpsreadsheet: Introduce "virtual writing mode" where the writer does not get its data from the spreadsheet, but from an event ("OnNeedCellData"). Introduce stream switching for xlsxooxml. Both feature allow to write HUGE spreadsheet files. Add example "test_virtualmode".
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3306 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-10 20:43:46 +00:00
ddd6902edf fpspreadsheet: Significantly improve speed of the ooxml writer, by rvk (see discussion in http://forum.lazarus.freepascal.org/index.php/topic,25110.0.html)
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3305 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-10 15:55:40 +00:00
1979ed4e77 fpspreadsheet: document reason for r3299
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3301 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-08 22:02:13 +00:00
d1ef94451a fpspreadsheet: Fix invalid xml characters issue in writing xlsx files (see http://forum.lazarus.freepascal.org/index.php/topic,25110.msg152030.html#msg152030).
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3300 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-08 20:52:59 +00:00
a884bedf92 fpspreadsheet: Fix zip/xml path delimiter issue for ooxml making fps-written xlsx files unreadable by Libre/OpenOffice (see //forum.lazarus.freepascal.org/index.php/topic,25110.0.html)
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3299 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-08 19:03:58 +00:00
9fb1a96f20 fpspreadsheet: Fix bug #026451 ("Wrong {$IFDEF} in xlsxooxml.pas and fpsopendocument.pas")
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3284 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-07-05 18:11:41 +00:00
d0927d2d03 fpspreadsheet: Further reduction of hints and warnings
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3206 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-06-20 15:58:22 +00:00
d29219fc68 fpspreadsheet: Mark TsSpreadsheet.GetLastColNumber/GetLastRowNumber as deprecated, use GetLastColIndex/GetlastRowIndex instead.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3101 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-05-26 15:27:35 +00:00
00ed56d1ef fpspreadsheet: Integrate number format parser into fpspreadsheet. Some regressions in format detection...
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3068 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-05-20 16:13:48 +00:00
dae7caff9c fpspreadsheet: Improved format detection when reading biff files. Unit test without errors due to biff now again. Fix compilation error of other formats due to new NumFormatList.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3048 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-05-15 12:53:56 +00:00
f69a47c902 fpspreadsheet: Add/complete color support for biff2 and biff8, reading and writing. Display colors in fpspreadsheetgrid.
Remove parameter AData in several methods of the readers/writers and replace it by FWorkbook passed at creation.
Add unit tests for font and color support. No issues.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2960 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-04-23 22:29:32 +00:00
4f85834153 fpspreadsheet: Restructure reader/writer declarations to have in "public" only methods needed by the application
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2957 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2014-04-21 11:30:22 +00:00
6a4ff4c1c2 * Correction to r2863: use ISO 8601 format for WriteDateTime text output (currently every format except BIFF8 xls).
Ensures resulting files are interoperable regardless of OS locale settings, conforming to date/time cell support in BIFF8.



git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2865 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2013-12-23 12:11:20 +00:00
7f7d07f151 + Add support for text/number/date formats in BIFF8/xls.
+ Add support for writing out date/time to non-BIFF8 xls (though as text only for now)
  Slightly modified patch by wp, thanks a lot. 
  See
  http://forum.lazarus.freepascal.org/index.php/topic,22940.msg136761.html#msg136761

Still to do: add test cases for invalid format strings



git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2863 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2013-12-22 14:02:04 +00:00
abd8d0bea8 + Add date/time/datetime read/write support for BIFF8 xls format. No plans for earlier formats though the code could be adapted
+ XLS BIFF8: added DATE and TIME worksheet functions to RPN formula
* Allow writing formulas,numbers etc using cardinals increasing row/column limits for formats that support it.
* Add checks for text cell size limits when writing xls, xml. If exceeded, cell text will be truncated (better than corrupting the xls file - e.g. try to open it with Excel 2002 - as happens now with xls format)
* Formats that use fpspreadsheet zip have extra checks to prevent crashes for invalid zip dates
+ Use FPC built-in zip format when using FPC 2.7.1+ as it has fixes/improvements (e.g. zip64 support)
+ Added FPCUnit test suite to test reading and reading writing files. For now uses BIFF8 xls; contributions for other formats and more tests welcome. See the tests subdirectory.
+ Add link to msodumper tool for reference/debugging/troubleshooting .xls output

Fixes Mantis bugtracker issue #25388



git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2857 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2013-12-07 13:42:22 +00:00
29823d09b4 Patch from wp for fixing multiple sheet support in XLSX
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2412 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2012-04-29 15:22:53 +00:00
0ee4ede6b0 fpspreadsheet: Fixes using always point for numbers in OOXML and adds a solution to initialize the format settings in the constructor of the writer
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@2410 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2012-04-27 08:01:15 +00:00
d887861a83 fpspreadsheet: Adds bold support to ooxml
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1883 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-09-01 07:55:12 +00:00
20c57c5180 fpspreadsheet: Updates the zipper code
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1868 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 15:10:10 +00:00
9f27990b0a fpspreadsheet: Fixes remaining ooxml issues, now it actually works
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1867 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 15:06:41 +00:00
02caee546b fpspreadsheet: Now OpenOffice can open the generated ooxml
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1866 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 14:57:29 +00:00
feb164c7c0 fpspreadsheet: Some more ooxml fixes
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1865 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 13:40:10 +00:00
36bcb9079b fpspreadsheet: Some more ooxml fixes
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1864 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 13:24:16 +00:00
054f1bacde fpspreadsheet: Some more ooxml fixes
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1863 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 13:01:53 +00:00
54e28dd0db Implements the possibility to save a TZipper to a TStream and uses that
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1862 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 11:59:47 +00:00
4dafa5ce8d fpspreadsheet: Attempt to implement basic OOXML support
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1861 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2011-08-29 10:55:22 +00:00
979180ddd9 Adds bold style support to OpenDocument
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1400 8e941d3f-bd1b-0410-a28a-d453659cc2b4
2010-12-08 10:24:15 +00:00