Commit Graph

1017 Commits

Author SHA1 Message Date
JCrawfy
c26a59f32e fix compile error due to reference to r-value that MSVC silently lifetime extended 2019-11-16 12:49:26 +13:00
JCrawfy
ec29e227d4 slightly optimise cell parsing routine, fix formula being incorrectly loaded 2019-11-16 12:17:07 +13:00
JCrawfy
8eda9f226f parse height as a double 2019-11-16 11:54:55 +13:00
JCrawfy
d83ed0b200 handle whitespace in xml (e.g. '\n' because sheet was pretty printed) 2019-11-16 11:40:43 +13:00
JCrawfy
b27e7fe07e rewrite the sheet data xml parse logic
a few hacks still, but a very noticeable speed up (2.2 -> 1.1 seconds on large.xlsx)
2019-11-16 11:28:00 +13:00
Matthew Albrecht
9eee8ec0bb
Check for existing uninstall target before creating. 2019-09-20 15:13:09 -05:00
Thomas Fussell
a978e73354 change orientation name in default case 2019-09-15 11:26:39 -04:00
Thomas Fussell
a1d46694c1 Merge branch 'add-all-locales' into dev 2019-09-15 11:25:39 -04:00
Thomas Fussell
90ddaedc81 Merge branch 'master' into dev 2019-09-07 21:10:11 -04:00
Alessandro Bettarini
2b221fec81 Prevent throwing exception when encountering country code 10485 2019-09-07 11:32:49 +02:00
Thomas Fussell
df0626579b add all windows locales as a workaround for #407 2019-09-05 15:37:55 -04:00
Thomas Fussell
cc88c4829b fix frozen first rows/columns for #369 2019-07-07 11:17:00 -04:00
Thomas Fussell
be7a91f7be try default password on read failure, closes #161 2019-07-06 15:29:04 -04:00
Thomas Fussell
ba01de47a7
Merge pull request #345 from kostasdizas/issue165-compound-document
Removed duplicate code in compound document
2019-07-06 12:23:09 -06:00
Thomas Fussell
9f1b2ed4c8 Merge branch 'dev' of github.com:tfussell/xlnt into dev 2019-07-06 14:21:13 -04:00
Thomas Fussell
90b672cf6b Merge branch 'Issue#318_fp-equality' of https://github.com/Crzyrndm/xlnt into Crzyrndm-Issue#318_fp-equality 2019-07-06 14:20:53 -04:00
Thomas Fussell
01cd2a3e3f
Merge pull request #346 from Crzyrndm/Issue#335
GCC5 compatibility + CI
2019-07-06 12:03:53 -06:00
Thomas Fussell
1e52c06376 Merge branch 'dev' of github.com:tfussell/xlnt into dev 2019-07-06 14:02:50 -04:00
Thomas Fussell
40baecdf02 Merge branch 'images' of https://github.com/kostasdizas/xlnt into kostasdizas-images 2019-07-06 14:02:24 -04:00
Thomas Fussell
076c421a1f
Merge pull request #332 from Erroneous1/master
Export xlnt::xlnt target when installed.
2019-07-05 06:21:40 -06:00
Thomas Fussell
d5172d8bcd implement writing of rich text phonetic properties and phonetic runs 2019-07-03 17:47:28 -04:00
Thomas Fussell
7c9443dca9
Merge branch 'dev' into issue165-xlsx-producer 2019-07-03 13:36:25 -06:00
Thomas Fussell
123ecc95fe
Merge branch 'dev' into issue378-unicode_title 2019-06-22 10:54:20 -04:00
Thomas Fussell
1c22e9781e
Merge pull request #364 from kostasdizas/phonetics
Added support for phonetic fields
2019-06-22 10:53:09 -04:00
Thomas Fussell
b6455ff6d1
Merge pull request #356 from kostasdizas/issue353
Fixed block calculation in xlsx_producer
2019-06-22 10:52:14 -04:00
Thomas Fussell
f54a150589
Merge branch 'dev' into phonetics 2019-06-22 10:51:30 -04:00
Thomas Fussell
e11188ccd1
Merge branch 'dev' into issue378-unicode_title 2019-06-22 10:48:35 -04:00
Thomas Fussell
b1a2f6d0bf
Merge pull request #382 from kostasdizas/issue374-format
Update the format elements when setting the cell style
2019-06-22 10:43:41 -04:00
Thomas Fussell
595397994f
Merge pull request #359 from kostasdizas/issue254
Corrected the calculation and formatting of weekdays
2019-06-21 17:52:14 -04:00
Thomas Fussell
938d99ddc5
Merge pull request #363 from pmir/fix-relationship-ordering
Fix relationship sorting
2019-06-21 17:49:20 -04:00
Thomas Fussell
7e22fad735
Merge pull request #329 from Crzyrndm/Issue#327
Relative hyperlinks
2019-06-11 20:40:36 -04:00
Kostas Dizas
38afc61219
Update the format elements when setting the cell style. 2019-03-07 00:26:32 +00:00
Kostas Dizas
d4b36b6582
Added support for unicode sheet titles
Fixes #378
2019-02-28 20:29:17 +00:00
Kostas Dizas
36d6b9823d
Adjust merged cells when moving cells 2018-12-02 03:18:37 +00:00
Kostas Dizas
38f12ff846
Serialise phonetic runs and properties 2018-11-21 13:43:42 +00:00
Kostas Dizas
e9c23c3fc7
Add phonetic runs and properties to rich text 2018-11-21 13:43:31 +00:00
Kostas Dizas
e9118cff24
Serialise phonetics visibility for cells 2018-11-21 13:04:07 +00:00
Kostas Dizas
48a865cd66
Added phonetics field visibility option on cells 2018-11-21 13:03:02 +00:00
przemekmirek
5a44433291 Fix relationship sorting 2018-11-08 20:47:58 +01:00
Kostas Dizas
03198f7e40 Corrected the calculation and formatting of weekdays
and relevant unit tests
2018-10-28 20:32:46 +00:00
Kostas Dizas
dde45fd17f Fixed block calculation in xlsx_producer 2018-10-19 23:19:23 +01:00
Kostas Dizas
3ab49c8af6 Importing row spans in the row_properties object 2018-10-19 20:48:54 +01:00
Kostas Dizas
db5abec894 Worksheet dimension should include lowest props 2018-10-19 20:47:35 +01:00
Kostas Dizas
b6f0d0a7e1 Fixed the uninitialised bool on a rich_text_run 2018-10-13 09:11:26 +01:00
Kostas Dizas
61639c7275 Added write_rich_text method to xlsx_producer
This eliminates some duplicate code as reported in #165
2018-10-12 19:56:09 +01:00
Kostas Dizas
698b40c54c Added basic support for embedded images 2018-10-12 13:52:30 +01:00
Kostas Dizas
23fcfd636b Removed duplicate code in compound document 2018-10-01 13:31:32 +01:00
Crzyrndm
ed05bfeb44 Rename parameter to avoid ambiguous parameter
-- Issue#335
2018-09-15 19:50:59 +12:00
Kostas Dizas
c804b4c569 Added new feature to insert and delete rows and columns 2018-09-11 09:44:43 +01:00
Aaron Bishop
0d76afb801 Fix using variable before defining it 2018-08-26 07:36:24 -04:00
Aaron Bishop
37638f6d2b Use cache path for *_DEST_DIR
Use GNUInstallDirs
Prefix cache variables with XLNT_
Combine multiple target_include_directories
2018-08-25 09:39:39 -04:00
Crzyrndm
875f143d74 fix parameter ordering inconsistency that could cause switching the parameters to give different results 2018-08-25 13:31:16 +12:00
Crzyrndm
4188d35caf Add tests for the other small utilities 2018-08-19 15:11:57 +12:00
Crzyrndm
a28f3fb7a9 zstream implicit conversion warning 2018-08-18 18:37:19 +12:00
Crzyrndm
9e78e55c62 Another missing include 2018-08-18 18:16:39 +12:00
Crzyrndm
61e46c934a resolve float-equals warnings 2018-08-18 18:12:46 +12:00
Crzyrndm
8b30319514 missing include 2018-08-18 17:31:25 +12:00
Crzyrndm
d7603964e9 another compile error 2018-08-18 17:28:31 +12:00
Crzyrndm
3a10e661b8 constexpr concern no longer valid 2018-08-18 17:24:34 +12:00
Crzyrndm
edafcd1bb5 More compile fixes 2018-08-18 17:23:04 +12:00
Crzyrndm
6aa10131a2 Fixing compile errors 2018-08-18 16:51:53 +12:00
Crzyrndm
7b05beae90 unsupress fp equality warnings 2018-08-18 16:34:31 +12:00
Crzyrndm
3db87244f1 Compare numeric cell values using float_equals 2018-08-18 16:24:32 +12:00
Crzyrndm
68589d91eb default float for epsilon
-- Even if both arguments are doubles, they may have been promoted by a previous operation and then the comparison would fail
2018-08-15 18:19:36 +12:00
Crzyrndm
4487b988e7 Define fp equality function
-- Based on checks and defaults used by various testing frameworks (primarily GTest and Catch)
-- Moved the header into detail where it should have been to start with (oops)
2018-08-14 22:48:28 +12:00
Aaron Bishop
ecf402972b Export xlnt::xlnt target when installed.
Usage:
find_package(Xlnt)
target_link_libraries(foo PRIVATE xlnt::xlnt)
2018-08-07 09:08:29 -04:00
Crzyrndm
10c5781e6d
Merge pull request #323 from Crzyrndm/build_system_improvements
Build system improvements + stylesheet optimisations
2018-08-05 14:15:09 +12:00
Crzyrndm
94fd22f492
Merge pull request #321 from Crzyrndm/Issue#282
Don't set comment size on explicit comment overload
2018-08-05 13:05:54 +12:00
Crzyrndm
ca8c93c696
Merge pull request #324 from Crzyrndm/iterator-default-ctors
Default ctors for iterators
2018-08-05 13:04:09 +12:00
Crzyrndm
dc7f369be9 Add relative urls to the valid hyperlink url set 2018-08-04 14:55:17 +12:00
Crzyrndm
c3296db932 Revert "Another easy 15-20% by not searching with no references"
This reverts commit 3ae31fadc3.
2018-07-30 07:22:45 +12:00
Crzyrndm
544e90c975 fix spectacular typo
- Using rgba for comparison is still faster, but it does help correctness when you compare two different instances
2018-07-30 07:07:32 +12:00
Crzyrndm
3ae31fadc3 Another easy 15-20% by not searching with no references 2018-07-29 23:28:02 +12:00
Crzyrndm
e6a84c0cf0 Optimise modifying a new format to reduce garbage collection runs 2018-07-29 22:10:56 +12:00
Crzyrndm
b4f695b3ea fixing warnings 2018-07-29 17:33:22 +12:00
Crzyrndm
5a5db1a50b use std::find and don't double iterate the list
- ~5% perf improvement in img2xlsx example
2018-07-29 16:48:18 +12:00
Crzyrndm
f64dbc00c4 string compare is slow, use rgba member instead 2018-07-29 16:24:09 +12:00
Crzyrndm
e01f461b64 get the initialisation order right
- members reordered to reduce sizeof classes (due to alignment). ctors needed to be updated for this
2018-07-29 14:37:08 +12:00
Crzyrndm
dd6f338419 Remove memory growth based on row count
- Nested unordered_map was the cause of a significant memory/cell spike.
- added cell_reference hash, lookup by cell_reference to make memory usage proportional to cell count only
2018-07-29 11:43:23 +12:00
Crzyrndm
138c90883b Modify writer benchmark to make comparisons between column and row usage
- Cut time to write a sheet with many rows by not calling highest_row inside a loop over the rows (On^2 -> On)
- Observation: more memory is used / cell as the number of rows increases
2018-07-29 10:11:00 +12:00
Crzyrndm
d93e470a52 Suppress GCC maybe-uninitialized warning
Signal to noise ratio is very high, and the #pragma suppressions for optional aren't working for GCC8
2018-07-28 14:54:49 +12:00
Crzyrndm
ade8cf3b6c Ensure <color tint=...> is correctly serialised as an optional double 2018-07-28 14:44:49 +12:00
Crzyrndm
e1daff535c Better idea, set the defaults 2018-07-28 14:04:22 +12:00
Crzyrndm
d39b7a107a comment default size only set in the overloads which can't set size
- Debatable whether position should receive the same treatment
2018-07-28 13:55:56 +12:00
Thomas Fussell
94faf01b72
Merge pull request #320 from sukoi26/SheetFormatPr
SheetformatPr issue #287
2018-07-24 23:42:51 -04:00
Thomas Fussell
8f39375f4c revert unwise data structure change 2018-07-24 23:08:44 -04:00
Thomas Fussell
cbe50f4681 Fix some issues after merge 2018-07-23 00:13:20 -04:00
Thomas Fussell
0af7ad88e1 Merge branch 'tasmail-master-shared-strings-performance' into dev
remove less than comparators

fix conflicts
2018-07-23 00:10:16 -04:00
sukoi26
8f4248d9c3
change SheetFormatPr
change "defaultRowHeight" not optional
2018-07-22 18:44:31 +02:00
Crzyrndm
6562c41ae1 fix typo in Cmake lists 2018-07-21 12:38:33 +12:00
Crzyrndm
fede2d3168 fix Clang CI warnings 2018-07-21 12:33:58 +12:00
Crzyrndm
ad24d9485d Resolve CI warning about using an uninitialised variable 2018-07-21 12:19:15 +12:00
Crzyrndm
761eee3e5f
Merge pull request #314 from Crzyrndm/dev-CI-build-modifications-PR
Travis CI improvements
Resolves #147
2018-07-21 12:04:56 +12:00
Crzyrndm
4dae88f004
Merge pull request #311 from Crzyrndm/dev-unimplemented-functions-PR
Implementations for unimplemented functions
2018-07-21 11:31:25 +12:00
Crzyrndm
f035b9041e
Merge pull request #310 from Crzyrndm/dev-reorder-wb-relations-PR
Resolves #279
2018-07-21 11:13:05 +12:00
sukoi26
a2dc4a34f1
update bestFit commit
error compiling  std::vector<std::string>
2018-07-19 13:53:54 +02:00
sukoi26
4f9e8ab37f
bestFit change
remove from skip_attributes list
2018-07-19 12:49:32 +02:00
Crzyrndm
0aee6fd9b1 Cleanup some cmake modifications 2018-07-16 19:41:40 +12:00
Crzyrndm
ad759ae4f7 fix for build failure with GCC8{-std=c++17} 2018-07-16 19:08:19 +12:00
Crzyrndm
b9b47672ea cxx_std_14 and co aren't available until cmake v3.8 2018-07-16 18:52:21 +12:00
Crzyrndm
5671167d1d add cmake option XLNT_CXX_LANG to set the targetted cxx standard
- valid options are 11, 14, and 17
- default is 14
- cmake will error if an invalid value is provided
- requires cmake >= 3.10.* to take effect in visual studio
2018-07-15 21:23:22 +12:00
Crzyrndm
25d75cb5c3 complete the compiler set (gcc 6/7/8 + clang 4/5/6) 2018-07-14 21:27:54 +12:00
Crzyrndm
11573f45e6 Resolve remaining warnings 2018-07-14 20:25:10 +12:00
Crzyrndm
9a33210144 Resolve warnings about global ctors and an unused variable
-- while unlikely to become an issue, ordering of ctors across source files is undefined and debugging issues related to it is not easy so just avoid that issue
2018-07-14 19:54:31 +12:00
Crzyrndm
d4cc538faf remove -Werror from clang build to allow CI to run through
-- fixing CI warnings 1 at a time would be a complete waste of time
-- blacklist some of the overkill warnings
2018-07-14 19:02:12 +12:00
Crzyrndm
ddab6551b0 Add tests for functionality added to implement declared functionality 2018-07-13 17:14:07 +12:00
Crzyrndm
03020cc793 improved hyperlink implementation
- hyperlinks to cells and ranges are complete
- hyperlink::display is now set as well as the cell value (in excel these can be different)
-- if a cell is empty, display is equal to value text
-- if a cell has a value, display can be just about anything
- This version copies excel in that display is completely ignored once value is set
- All hyperlink tests are now part of the cell test suite (not the worksheet test suite which the majority were previously located)
2018-07-13 17:14:07 +12:00
Crzyrndm
054f509f7a fix missing return statement 2018-07-13 17:14:06 +12:00
Crzyrndm
1390d6a76e unimplemented functions in range and path 2018-07-13 17:14:06 +12:00
Crzyrndm
3d9e887d4a unimplemented functions under utils/ 2018-07-13 17:14:05 +12:00
Crzyrndm
95ca51e5c8 unimplemented functions under styles/ 2018-07-13 17:14:05 +12:00
Crzyrndm
49c4e725dc All unimplemented functions under cell/ 2018-07-13 17:14:05 +12:00
Crzyrndm
0d1bca3fd4 Remove hidden dependency on unordered map extraction order
Issue #279
2018-07-13 12:43:21 +12:00
Crzyrndm
7458426111 return by const ref 2018-07-13 12:43:21 +12:00
Crzyrndm
53c193433f Ensure worksheets get a unique internal filename
Issue #279
2018-07-13 12:43:20 +12:00
Crzyrndm
dcf50cb4cd return by const reference when possible 2018-07-13 12:43:20 +12:00
Crzyrndm
cf8991a234 no need to recreate the uri 2018-07-13 12:43:19 +12:00
Crzyrndm
322490b397 re-write workbook::reorder_relationships
Issue #279
2018-07-13 12:43:19 +12:00
Crzyrndm
1ab25fa7fc
Merge branch 'dev' into dev-Issue298 2018-07-13 11:21:13 +12:00
Crzyrndm
7160b7494d
Merge pull request #305 from Crzyrndm/dev-iterator-improvements-2
Remove uses of std::iterator (deprecated in C++17) + improvements
2018-07-13 11:14:19 +12:00
sukoi26
28a71572cf
update #290
suggested by  Crzyrndm
2018-07-10 09:32:34 +02:00
Crzyrndm
399b5e3775 Resolve CI build failure 2018-07-10 14:43:22 +12:00
Crzyrndm
b95919323d add more tests for worksheet iterator, add operator--
* operator-- completes the naive bidirectional iterator requirements
* tests for various construction and assignment behaviours
* tests for iteration and dereferencing behaviours
2018-07-10 12:40:56 +12:00
Crzyrndm
04b50d9b8e worksheet_iterator - operator* const overloads
Users may still want to dereference a const iterator (note: not a const_iterator).
Also use the "reference" typedef to ensure there is only 1 source of information
2018-07-10 12:40:54 +12:00
Crzyrndm
a47985b2db worksheet_iterator - rule of 5/0
For rule of 5/0, where no implementation is required, all 5 operations have been declared as defaulted. This is less likely to forget definitions for all 5 if required
- removed forwarding of copy ctor to assignment (which was defaulted already) in favour of defaulted copy ctor
- added defaulted move assignment/ctor and destructor

Changed workbook reference to a pointer to allow tests to compile (reference isn't rebindable so defaulted assignment is equivalent to deleted)
2018-07-10 12:40:52 +12:00
Crzyrndm
62e0a7dd17 Revert "cell iterator - add operator->"
This reverts commit 1b705ae043ae1b43d0ecbc93da04c944383bb296.
2018-07-10 12:40:48 +12:00
Crzyrndm
bc8cd21d67 range_iterator - operator* const overloads
Users may still want to dereference a const iterator (note: not a const_iterator).
Also use the "reference" typedef to ensure there is only 1 source of information
2018-07-10 12:40:46 +12:00
Crzyrndm
1e66824af0 range_iterator - rule of 5/0
For rule of 5/0, where no implementation is required, all 5 operations have been declared as defaulted. This is less likely to forget definitions for all 5 if required
- removed forwarding of copy ctor to assignment (which was defaulted already) in favour of defaulted copy ctor
- added defaulted move assignment/ctor and destructor
2018-07-10 12:40:44 +12:00
Crzyrndm
1c4f9c7ed2 cell iterator - add operator->
Implementation just forwards to operator*, but this is a typical operator in the iterator API and is suprising and inconvenient that it is not present
2018-07-10 12:40:40 +12:00
Crzyrndm
20e72d69e5 cell_iterator - operator* const overloads
Users may still want to derederence a const iterator (note: not a const_iterator).
Also use the "reference" typedef to ensure there is only 1 source of information
2018-07-10 12:40:38 +12:00
Crzyrndm
92ac3a2a2e cell_iterator - rule of 5/0
For rule of 5/0, where no implementation is required, all 5 operations have been declared as defaulted. This is less likely to forget definitions for all 5 if required
- removed forwarding of copy to assignment (which was defaulted already) in favour of defaulted copy ctor
- added defaulted move assignment/ctor and destructor
2018-07-10 12:40:36 +12:00
sukoi26
99f20a014a
error what(): xl/sharedStrings.xml: error: duplicate attribute #290 2018-07-09 18:21:01 +02:00
Crzyrndm
a8fa6637fe fix workbook::operator== always returning false, add tests for workbook::load
workbook::operator== was comparing the value of the raw pointer held by two std::unique_ptr's. By definition, this is always false in a well behaved program (if it's true, things go bang...). This then led to adding equality operators to nearly every other struct/class in xlnt to support workbook::operator==

workbook::load and the non-default ctors for loading data from a file are tested using the now functional equality operator

NOTE: a large number of copy ctors need updates/fixing. Many should be defaulted
2018-07-03 14:05:07 +12:00
Crzyrndm
688c8c7f33 add column_index to cell to be consistent with cell_reference
Issue #298
The consistency argument is a good one in my opinion
2018-07-03 11:10:47 +12:00
Crzyrndm
bb04205dac workbook parameterised constructors
Issue #298
- all 4 are simply duplicating existing behaviour, but perhaps we can get a more optimal version in future
- istream ctor is intended as an extension point that can then be used to create free/static functions to work with any future data source (vector), while the path ctor is a convenience function for the common case (from file)
2018-07-02 21:33:27 +12:00
Crzyrndm
e0d62b0835 Cleanup from review 2018-06-26 20:32:59 +12:00
Crzyrndm
0325c19488 Cleanup 2018-06-25 23:17:21 +12:00
Crzyrndm
3d3a59012a extLst element round tripped 2018-06-25 23:12:35 +12:00
Crzyrndm
4ff68319b0 Fix CI build warnings 2018-06-25 21:45:40 +12:00
Crzyrndm
8ba7f5b45d default is not a contextual keyword 2018-06-25 21:41:25 +12:00
Crzyrndm
49bd0c8fb4 Fix warnings + CI compile error 2018-06-25 21:28:17 +12:00
Crzyrndm
840d1bcefc Serialisation of extLst without namespace support
-- roundtripping namespaces requires modifications of the parser used for the entire worksheet as there does not appear to be a way to track the namespace changes without listening/registering for the event. This (ofcourse) breaks lots of other things...
2018-06-24 23:08:23 +12:00
Crzyrndm
a347d9c05d ext_list parsing for worksheets 2018-06-24 21:25:58 +12:00
Crzyrndm
1c1d63498a Parsing headerFotter block of test sheet correctly 2018-06-24 17:31:05 +12:00
Crzyrndm
d12d2e450b std::to_string is not good fpr serialising doubles
-- it uses fixed 6dp, xlsx wants 15sf
-- stringstream with precision set to 15 serialises correctly
2018-06-24 14:29:56 +12:00
Crzyrndm
e8fcd49c0d Add serialisation of "topLeftCell" sheetView attribute 2018-06-24 14:19:03 +12:00
Crzyrndm
d2d0c2ab55 Serialisation of sheetPr and printOptions elements 2018-06-24 14:02:01 +12:00
Crzyrndm
93323f334d Basic pageSetup persistence
-- NOTE: The struct page_setup doesn't currently reflect the attributes of the pageSetup element
2018-06-24 12:34:56 +12:00
Crzyrndm
7820ac548f re-save custom_heights_widths.xlsx, add defaultColWidth sheet attribute
-- custom_heights was the only test sheet where the integral value was being saved with a trailing ".0"
-- Updated tests to expect the new values
-- added the new property "defaultColWidth"
2018-06-24 11:53:45 +12:00
Crzyrndm
884558fd15 Write numbers using a standard formatter (15sf to match excel) 2018-06-24 11:06:02 +12:00