Commit Graph

636 Commits

Author SHA1 Message Date
alaw
9262576f27 custom-properties bool variant change i4 to bool 2017-01-22 19:34:40 +01:00
Thomas Fussell
0c100e166a fix up comments, hyperlinks, and formulae consumption tests 2017-01-21 19:12:26 -05:00
Thomas Fussell
7a991da9df Merge branch 'master' of http://github.com/tfussell/xlnt 2017-01-21 10:29:32 -05:00
Thomas Fussell
22c1f08b83 fix custom property pids 2017-01-21 10:29:23 -05:00
Thomas Fussell
e4ec1a2850 use system packages for zlib, cryptopp, and cxxtest. WIP [ci skip] 2017-01-21 10:12:08 -05:00
Thomas Fussell
a2bfdee2f2 intermediate commit 2017-01-21 09:04:10 -05:00
Thomas Fussell
72470c6371 hardcode enum serialization/deserialization, improve metadata property comsumption 2017-01-16 13:05:19 -05:00
Thomas Fussell
571c0103b5 continue work on workbook metadata properties 2017-01-15 19:08:57 -05:00
Thomas Fussell
f18e9dbc09 begin work on handling properties correctly 2017-01-14 14:09:01 -05:00
Thomas Fussell
753597510d Merge branch 'master' of https://github.com/sukoi26/xlnt into sukoi26-master 2017-01-10 20:28:06 -05:00
Thomas Fussell
2991872778 clean up namespace handling in consumer and producer, improve stylesheet consumption 2017-01-10 20:25:59 -05:00
Thomas Fussell
3acd06b857 get relationship strings up to spec, closes #106 2017-01-10 20:25:11 -05:00
Thomas Fussell
bef9effa12 shift relationship ids down by one after deleting one to maintain contiguity, fixes #104 2017-01-10 22:14:33 +01:00
Thomas Fussell
a66c0d1f3e remove two more linux-specific overloads and fix the call that was requiring them 2017-01-10 22:14:33 +01:00
Thomas Fussell
7100b64e45 remove long long overloads for cell::value, let's see if this breaks anything 2017-01-10 22:14:33 +01:00
Thomas Fussell
90c7e929a9 clean up test xml_helper, rename zip to zstream 2017-01-10 22:14:33 +01:00
Thomas Fussell
44b11d342c shift relationship ids down by one after deleting one to maintain contiguity, fixes #104 2017-01-08 14:12:55 -05:00
Thomas Fussell
e9c8116b0d remove two more linux-specific overloads and fix the call that was requiring them 2017-01-05 08:09:08 -05:00
Thomas Fussell
a0dea36605 remove long long overloads for cell::value, let's see if this breaks anything 2017-01-04 21:15:29 -05:00
Thomas Fussell
cc1a5e15f6 clean up test xml_helper, rename zip to zstream 2017-01-04 19:02:31 -05:00
sukoi26
32d3e7a61c Update xlsx_consumer.cpp 2017-01-04 18:53:45 +01:00
Thomas Fussell
45428c7f2b update copyright dates for 2017 2017-01-02 20:35:18 -05:00
Thomas Fussell
c43561b4bd remove calcChain when no formulae remain in any cell, correct calcChain relationship type string, closes #98 2017-01-02 19:13:38 -05:00
Thomas Fussell
34304fd9c7 define worksheet::add_row_properties, closes #97 2017-01-02 18:36:33 -05:00
Thomas Fussell
186ec184e2 Merge branch 'master' of github.com:tfussell/xlnt 2017-01-02 18:32:17 -05:00
Thomas Fussell
e4d18b5603 skip optional protection attributes if they're not present, closes #93 2017-01-02 18:32:10 -05:00
Thomas Fussell
ffdf570907 remove incorrect link on static build 2017-01-02 18:19:24 -05:00
Thomas Fussell
8362913aa6 export workbook properties template specializations correctly 2017-01-02 18:09:51 -05:00
Thomas Fussell
afbab819c4 implement consumption of vt:lpwstr custom properties 2017-01-02 17:42:16 -05:00
Thomas Fussell
42c9233ad9 compile and link third-party amalgamation as a static lib instead of object files and fix clang warnings in cryptopp 2017-01-02 17:41:39 -05:00
Thomas Fussell
38cb446e3e remove cryptopp-object from static xlnt 2017-01-02 12:03:22 -05:00
Thomas Fussell
ccd2a0eb1e finally figure out how to build cryptopp directly rather than as an external project, time to test on other platforms 2017-01-02 10:47:54 -05:00
Thomas Fussell
ab1af4f73e apparently evaluation order is unspecified for assignment causing an off-by-one in gcc 2017-01-01 18:16:38 -05:00
Thomas Fussell
cdb97fda82 try that again 2017-01-01 09:12:01 -05:00
Thomas Fussell
7a7d44b693 use make_pair instead of braced initializer in rich_text constructor 2016-12-31 20:15:44 -05:00
Thomas Fussell
760f95e2df clean up cell deserialization for #103 2016-12-31 20:05:10 -05:00
Thomas Fussell
7de0b05480 fix zip header error when unzipping for #103 2016-12-31 19:15:09 -05:00
Thomas Fussell
398bf7a3bb remove potentially problematic methods on optional, fix windows build 2016-12-29 19:00:27 -05:00
Thomas Fussell
66b5187e73 stop trying to produce non-excel style xlsx files 2016-12-29 18:36:29 -05:00
Thomas Fussell
c637f412b6 continue working through xml problems as a result of fixing xml comparison 2016-12-26 09:38:26 -05:00
Thomas Fussell
c8f2ca204b clang-format all source files, fix broken test helpers--lots of cleanup necessary as a result [ci skip] 2016-12-24 10:04:57 -05:00
Thomas Fussell
6c32563d18 rename formatted_text to rich_text to match the spec, also text_run to rich_text_run 2016-12-23 06:52:02 -05:00
Thomas Fussell
244314d426 rename formatted_text to rich_text to match the spec, also text_run to rich_text_run 2016-12-23 06:51:30 -05:00
Thomas Fussell
008461bf60 finish full header/footer implementation, add support for page breaks, clean up row/column properties interface 2016-12-22 18:57:22 -05:00
Thomas Fussell
cd7c11a4ea Merge branch 'master' of github.com:tfussell/xlnt 2016-12-17 00:19:30 +01:00
Thomas Fussell
8427db5d46 fix cmake configuration for xcode generator 2016-12-17 00:18:28 +01:00
Thomas Fussell
886605d643 fix msvc build with some defines 2016-12-15 08:27:16 +01:00
Thomas Fussell
eafad0ad49 use scoped_enum_hash in xlsx_producer too 2016-12-14 11:39:59 +01:00
Thomas Fussell
d9404888a9 don't used empty braced initializer for z_stream_s to avoid gcc warning, it should be fine uninitialized [ci skip] 2016-12-14 11:39:38 +01:00
Thomas Fussell
e250174d1f define hash struct for scoped enum for header_footer's unordered_map 2016-12-14 11:25:18 +01:00
Thomas Fussell
414fe5da39 suppress dev warnings in cryptopp cmake, locate python more flexibly using find_package 2016-12-14 08:27:09 +00:00
Thomas Fussell
677c55156c centralize default case handling into its own header and apply it in number_formatter to fix warning 2016-12-14 07:58:15 +00:00
Thomas Fussell
db940fedc5 remove unused variable in pole 2016-12-14 07:56:51 +00:00
Thomas Fussell
2a6f2d6e2e handle xml:space, closes #95 2016-12-14 07:23:49 +00:00
Thomas Fussell
8dc374a1bb fix aes decryption 2016-12-13 23:48:02 +00:00
Thomas Fussell
b9a02916cf change from botan to cryptopp 2016-12-13 22:48:38 +00:00
Thomas Fussell
e0ce0fb279 get workbook.xml up to spec, closes #92 2016-12-10 19:46:21 +00:00
Thomas Fussell
beca771ef2 ensure all unused formula attributes are skipped for #88 2016-12-10 19:07:07 +00:00
Thomas Fussell
a8eadc1df5 skip hyperlink attributes for #88 2016-12-10 19:04:35 +00:00
Thomas Fussell
c8e7df6289 fix a few more warnings [ci skip] 2016-12-10 18:39:51 +00:00
Thomas Fussell
d0ef4333b4 get horizontal and vertical alignment up to spec, handle enum serialization more correctly for #90 2016-12-10 18:22:26 +00:00
Thomas Fussell
e1157625a5 begin refining headers and footers, remove dependency on pugixml 2016-12-10 00:18:50 +00:00
Thomas Fussell
860ad43506 clang format headers 2016-12-04 13:29:10 +01:00
Thomas Fussell
f33e887012 I really should set up a Linux VM one of these days 2016-12-03 21:39:03 +01:00
Thomas Fussell
4dc9f7dfa6 now we're getting somewhere 2016-12-03 21:35:09 +01:00
Thomas Fussell
30776eb77c let's just get rid of the method 2016-12-03 21:31:48 +01:00
Thomas Fussell
07d31cdbb3 fix more types and turn on benchmarks build on appveyor and travis 2016-12-03 16:46:48 +01:00
Thomas Fussell
d1d96be48f elaborate type in stylesheet 2016-12-03 16:35:48 +01:00
Thomas Fussell
9514984d42 getting closer 2016-12-03 16:31:10 +01:00
Thomas Fussell
2fe649146b fix msvc warning which also indicated a bug 2016-12-03 12:07:05 +01:00
Thomas Fussell
eff00f9540 specify enum class type differently for msvc build 2016-12-03 10:46:11 +01:00
Thomas Fussell
c55aac9ecf rename getters and setters to the property name, many breaking changes\! 2016-12-02 14:37:50 +01:00
Thomas Fussell
a1ff8c0ed2 parse relationship mode and implement reading hyperlinks, closes #87 2016-11-30 01:05:47 +01:00
Thomas Fussell
d9b1fef34f continue cleaning up xlsx_consumer 2016-11-30 00:31:06 +01:00
Thomas Fussell
7694c66f08 I give up for now 2016-11-27 19:12:38 +01:00
Thomas Fussell
7162f265c1 debug gcc exception 2016-11-27 18:47:37 +01:00
Thomas Fussell
ec42f3c3ac debug gcc exception 2016-11-27 18:41:46 +01:00
Thomas Fussell
85f62083c9 fix comment styles 2016-11-27 18:32:00 +01:00
Thomas Fussell
03762be3a1 debug gcc exception 2016-11-27 18:11:32 +01:00
Thomas Fussell
267bd4b096 debug gcc exception 2016-11-27 18:02:19 +01:00
Thomas Fussell
585a0b528f debug gcc exception 2016-11-27 17:58:12 +01:00
Thomas Fussell
b5693d49e6 debug gcc exception 2016-11-27 17:37:12 +01:00
Thomas Fussell
cdc6c2d4cf debug gcc exception 2016-11-27 17:32:20 +01:00
Thomas Fussell
5d1d1d43bc use exact float comparison in number formatter for now 2016-11-27 17:06:00 +01:00
Thomas Fussell
fecd239fcf fix some clang warning errors 2016-11-27 16:56:38 +01:00
Thomas Fussell
d353bbf42c declare/define static const member correctly 2016-11-27 16:01:23 +01:00
Thomas Fussell
7ac3d8a612 fix out of bounds error in mwvc and gcc by creating a temporary vector during decryption 2016-11-27 15:47:12 +01:00
Thomas Fussell
49860895ce fix typename outside of template error in msvc 2016-11-27 15:44:41 +01:00
Thomas Fussell
1ff174a0c9 ignore optional formula attributes 2016-11-27 09:41:03 +01:00
Thomas Fussell
26b0302aac clean up comment parsing 2016-11-27 09:35:21 +01:00
Thomas Fussell
91ea4d81ad specify initializer list type (why is this needed?) 2016-11-25 13:47:49 +00:00
Thomas Fussell
2cc3f7947a clean up xml parsing, fix numbers xlsx decryption, unskip some tests 2016-11-25 13:13:55 +00:00
Thomas Fussell
6653568a1c ignore sortState element in worksheet for #84 2016-11-21 01:45:38 -05:00
Thomas Fussell
123d3df982 handle multiple consecutive character events arising from buffer boundaries, #83 2016-11-20 19:38:58 -05:00
Thomas Fussell
2bfd909684 skip codeName attribute for #83 2016-11-20 18:36:52 -05:00
Thomas Fussell
ec6a010f8a remove unused modules and update documentation 2016-11-20 11:06:52 -05:00
Thomas Fussell
340a4b3195 add placeholder api comments for #28 2016-11-20 01:01:32 -05:00
Thomas Fussell
846ea8e0d6 add overload to worksheet::get_cell which accepts a column and row 2016-11-19 23:44:28 -05:00
Thomas Fussell
455be8fb5f fix mingw build, closes #80 2016-11-19 19:41:21 -05:00
Thomas Fussell
daab3cf8ba reformat xlsx_consumer.cpp 2016-11-19 17:19:38 -05:00
Thomas Fussell
c89b36f749 add missing include for std::function 2016-11-19 17:03:10 -05:00
Thomas Fussell
d393343c2e reformat cell.cpp 2016-11-19 16:50:35 -05:00
Thomas Fussell
dab1b0218d begin cleaning up xml handling in consumer 2016-11-19 16:42:16 -05:00
Thomas Fussell
8bd725f2fa ignore protectedRanges and make builtinId optional for styles, closes #82 2016-11-15 07:09:17 -06:00
Thomas Fussell
2618237678 fix #81 2016-11-14 20:14:42 -06:00
Thomas Fussell
b781aeb989 clean up comment reading and sketch out vml drawing reading 2016-11-13 11:52:39 -05:00
Thomas Fussell
cee933a1b8 finish implementing comment positioning, closes #68 2016-11-12 17:38:29 -05:00
Thomas Fussell
b06f3901f6 add missing include for std::fabs 2016-11-09 20:20:12 -05:00
Thomas Fussell
f90e35e007 optimize format garbage collection and apply style fills to formats correctly, fixes #79, fix cell iteration, closes #73, add third-party licenses to LICENSE.md, update README, fix all clang and msvc warnings 2016-11-09 19:52:18 -05:00
Thomas Fussell
24d074d6a7 only include codecvt on windows since gcc 4 doesn't ship with it 2016-11-07 22:12:08 -05:00
Thomas Fussell
75e0d9475b finish unicode filename implementation for #64, also fixes #78 2016-11-07 21:55:40 -05:00
Thomas Fussell
ca692790fa implement garbage collection to remove unreferenced formats and constituent parts 2016-11-07 21:11:30 -05:00
Thomas Fussell
1474c8ab82 begin trying to garbage collect cell formats 2016-11-03 19:26:11 -04:00
Thomas Fussell
f9e349ce8d Revert "working on styles, don't use yet"
This reverts commit 4e51e9e0e5.
2016-11-02 22:04:51 -04:00
Thomas Fussell
4e51e9e0e5 working on styles, don't use yet 2016-11-02 18:16:34 -04:00
Thomas Fussell
eeba8ffa86 copy previous formatting when changing the format of a cell, closes #76 2016-11-01 08:50:29 -04:00
Thomas Fussell
f2f5097164 fix coveralls call and ignore unknown pragmas 2016-10-31 23:30:21 -04:00
Thomas Fussell
1b32f46639 move zip_file_header to header 2016-10-31 22:41:20 -04:00
Thomas Fussell
2e3d027604 fix vml 2016-10-31 22:35:42 -04:00
Thomas Fussell
98d506a5db skip unused gz sources in zlib, fix style equality operator exports 2016-10-31 21:53:22 -04:00
Thomas Fussell
d8169b82d1 use c linkage for zlib 2016-10-31 20:55:05 -04:00
Thomas Fussell
862e6778e5 remove unused files 2016-10-31 20:49:38 -04:00
Thomas Fussell
0d97105122 clean up zip.cpp, enable and fix compiler warnings, use equality instead of hashing for style components, compile all cpp files in sample directory, track remote branches for submodules 2016-10-31 20:48:43 -04:00
Thomas Fussell
dce2367524 fix clang build 2016-10-30 21:44:43 -04:00
Thomas Fussell
25aea3fe72 disable wstring test on non-windows 2016-10-30 21:18:36 -04:00
Thomas Fussell
012dd0984e initial implementation of wstring filenames 2016-10-30 21:17:51 -04:00
Thomas Fussell
72c6569020 cast literal to streampos 2016-10-30 20:43:47 -04:00
Thomas Fussell
e9a398cc7a commit missing file 2016-10-30 20:28:40 -04:00
Thomas Fussell
5b4de6a150 use streams to access zip files and their contents instead of std::stringstream to reduce memory usage, replaces miniz with zlib, closes #66 2016-10-30 15:48:40 -04:00
Thomas Fussell
6d749aaa91 implement writing comments, still need to fix comment vml 2016-10-29 16:31:30 -04:00
Thomas Fussell
85ffb2029c set fill background to indexed_color(64) when the foreground is set 2016-10-29 12:41:55 -04:00
Thomas Fussell
0f7dc72070 create a static method in xlnt::fill to create a solid fill with a particular color to be the cell's background color 2016-10-29 12:17:22 -04:00
Thomas Fussell
5af753c443 fix windows and gcc build 2016-10-29 10:36:46 -04:00
Thomas Fussell
82311c96e4 implement reading of cell comments 2016-10-29 10:23:04 -04:00
Thomas Fussell
757e5e7034 fix appveyor build, I hope 2016-10-28 19:54:37 +08:00
Thomas Fussell
3c7c40cdfa make build system modular 2016-10-27 18:40:20 -04:00
Thomas Fussell
f0f0607638 revert to old cmake output directory method, fix travis build 2016-10-25 21:12:57 -04:00
Thomas Fussell
eae2dc1f3f fix appveyor build 2016-10-25 20:53:11 -04:00
Thomas Fussell
fbcf190ca2 Merge branch 'master' of http://github.com/tfussell/xlnt 2016-10-25 20:24:04 -04:00
Thomas Fussell
c49341c82f clean up cmake build, fix warnings, improve configuration, general
housekeeping, fixes #72, fixes #70
2016-10-25 20:22:22 -04:00
Thomas Fussell
b83cf64287 fix shared string enumeration for #72 2016-10-25 20:01:09 -04:00
Thomas Fussell
5479e572a4 fix windows build 2016-10-24 23:16:50 -04:00
Thomas Fussell
0359d1404c add pthread flag 2016-10-24 23:11:15 -04:00
Thomas Fussell
5c1cc5f3a7 call botan configure directly and elaborate hash_algorithm type 2016-10-24 22:42:23 -04:00
Thomas Fussell
9c8cba9f3f finally figured out how to decrypt with botan--swapping back out for botan 2016-10-24 22:09:15 -04:00
Thomas Fussell
bc24515104 Merge branch 'master' of http://github.com/tfussell/xlnt 2016-10-23 22:40:52 -04:00
Thomas Fussell
aea237a632 implement ooxml decryption (standard and agile) 2016-10-23 22:40:05 -04:00
Thomas Fussell
17b934852c ignore row styles for now 2016-10-23 21:12:47 -04:00
Thomas Fussell
b56b4db9ae unskip test 2016-10-23 20:00:22 -04:00
Thomas Fussell
0a80c302b3 fix sheet deletion, #71 2016-10-22 13:53:44 -04:00
Thomas Fussell
fe30096963 make xlsx_consumer more flexible to optional elements/attributes 2016-10-18 19:29:04 -04:00
Thomas Fussell
ac3fd6904b use correct password in crypto test 2016-10-18 19:28:04 -04:00
Thomas Fussell
4d20ccaa67 fix some xlsx consumption and production 2016-10-13 20:11:02 -04:00
Thomas Fussell
cf019f6af6 move parser parameter into a field, document some methods 2016-10-11 23:16:14 -04:00
Thomas Fussell
a5d50b8ec6 commit in-progress work for reading/writing password protected workbooks, #69 (not working yet) 2016-10-10 07:28:49 -04:00
Thomas Fussell
eee47c267c fix bug in worksheet::set_title 2016-10-10 07:01:19 -04:00
Thomas Fussell
dadf852752 getting too fancy with aliases 2016-09-21 19:13:22 -04:00
Thomas Fussell
c3993039bc unskip another round-trip test, making progress 2016-09-21 19:04:16 -04:00
Thomas Fussell
b5c46ede07 fix parameters with the same name as their type to fix gcc errors 2016-09-19 18:58:04 -04:00
Thomas Fussell
ef6b693ce1 finish translating xlsx_producer 2016-09-19 18:52:11 -04:00
Thomas Fussell
941bd2a672 translate theme to libstudxml, ugh... 2016-09-18 21:49:37 -04:00
Thomas Fussell
a81a0a6dde use value_traits for enum parsing/serialization and refactor xlsx_producer helper functions 2016-09-18 11:32:59 -04:00
Thomas Fussell
45f61ee644 begin translating xml parsing and serialization to libstudxml 2016-09-16 22:59:13 -04:00
Thomas Fussell
a03805acbf begin testing styles more extensively 2016-09-11 14:57:34 -04:00
Thomas Fussell
cb5a9d8802 continue fixing up border and fill round tripping 2016-09-10 10:05:06 -04:00
Thomas Fussell
ba2186ff7b uncomment/unskip some tests 2016-09-07 22:39:13 -04:00
Thomas Fussell
7310bb5590 fix writing frozen panes 2016-09-07 18:48:08 -04:00
Thomas Fussell
80ef8259c5 test_produce::test_produce_simple_excel() creates a file that opens in excel now 2016-09-07 18:02:46 -04:00
Thomas Fussell
fd1d73950d add missing include for std::floor 2016-09-05 20:30:25 -07:00
Thomas Fussell
3d21a83c93 make xml comparisons in xml helper content-type aware, fix excel style workbook generation 2016-09-05 19:17:36 -07:00
Thomas Fussell
300f694f04 missed some 2016-08-18 22:11:59 -04:00
Thomas Fussell
3f0a3424e6 minor fixes 2016-08-18 21:57:26 -04:00
Thomas Fussell
f9a45313a0 improve styles 2016-08-18 07:34:18 -04:00
Thomas Fussell
94881ce660 begin correctly implementing styles and formats 2016-08-16 00:23:49 -04:00
Thomas Fussell
a7067db2ba unskip a few more tests and fix xml helper node comparison 2016-08-13 19:44:45 -04:00
Thomas Fussell
6acba8ee9c remove default field from margins and fix ref to non-const 2016-08-13 15:12:00 -04:00
Thomas Fussell
b50bd4890f std::size_t overload is ambiguous so convert it to a string first for xml attribute value 2016-08-13 15:04:26 -04:00
Thomas Fussell
31911b1afc remove schemata, remove test xml data, implement minimal round-tripping 2016-08-13 14:45:26 -04:00
Thomas Fussell
29ef278779 fix linux build 2016-08-12 23:26:57 -04:00
Thomas Fussell
4baeeb824f finish excel template, fix errors 2016-08-12 23:06:25 -04:00
Thomas Fussell
1b5bdbeb18 improve manifest interface, work on round-tripping 2016-08-12 00:22:14 -04:00
Thomas Fussell
ed591e1559 fix more build errors 2016-08-10 00:58:38 -10:00
Thomas Fussell
2fff29ba86 fix non-windows build errors 2016-08-06 10:50:29 -04:00
Thomas Fussell
6c829a235a improve manifest, implement true thumbnail handling, being refactoring serialization tests 2016-08-06 10:40:17 -04:00
Thomas Fussell
cf80c46b66 a little refactoring 2016-08-05 01:52:05 -04:00
Thomas Fussell
53e1757c2e fix passing non-const ref to temporary 2016-08-03 08:46:50 -04:00
Thomas Fussell
116e53fb0c remove shlwapi functions and use stat instead 2016-08-03 08:00:16 -04:00
Thomas Fussell
f679f8a8d1 remove document_properties and app_properties includes 2016-08-03 07:45:09 -04:00
Thomas Fussell
d15ef0f6bf remove unused zip_file function and delete removed source file packaging/document_properties 2016-08-03 07:41:42 -04:00
Thomas Fussell
ccc3995709 start correctly implementing opc 2016-08-03 00:12:18 -04:00
Thomas Fussell
f21d4c922c initialize tint, probably fixes the intermitten error 2016-08-02 00:34:07 -04:00
Thomas Fussell
ff401a0843 add temporary output for debugging 2016-08-02 00:20:29 -04:00
Thomas Fussell
0da0299328 remove extraneous source file 2016-08-01 18:51:11 -04:00
Thomas Fussell
69bd89da63 specialize std::hash for border::side and get rid of border::default 2016-08-01 18:47:17 -04:00
Thomas Fussell
4234a62b8b clean up api and do more testing 2016-08-01 18:33:43 -04:00
Thomas Fussell
e8972ec423 fix infinite loop 2016-07-30 18:35:57 -04:00
Thomas Fussell
cd3c0c5f0b test number_formatter and improve exceptions 2016-07-30 11:58:36 -04:00
Thomas Fussell
5bd1a79536 refactor custom exceptions 2016-07-29 18:55:49 -04:00
Thomas Fussell
d39f5b2299 improve manifest 2016-07-29 17:50:33 -04:00
Thomas Fussell
6707736fa8 don't use worksheet id as the sheet index since it is an arbitrary value 2016-07-26 21:57:35 -04:00