初始化PHP-Xlswrite扩展
1
library/libxlsxwriter/.github/FUNDING.yml
vendored
Normal file
@ -0,0 +1 @@
|
||||
custom: ["paypal.me/xlsxwriter"]
|
60
library/libxlsxwriter/.gitignore
vendored
Normal file
@ -0,0 +1,60 @@
|
||||
*.a
|
||||
*.o
|
||||
*.so
|
||||
*.so.*
|
||||
*.to
|
||||
*.lo
|
||||
*.la
|
||||
*.dylib
|
||||
*.dll
|
||||
*.gcno
|
||||
*.gcda
|
||||
test_*
|
||||
!test_*.c
|
||||
!test_*.cpp
|
||||
!test_*.py
|
||||
*.tar.gz
|
||||
*~
|
||||
TAGS
|
||||
.#*
|
||||
*#
|
||||
~*xlsx
|
||||
*.xlsx
|
||||
*.bak
|
||||
!test/functional/xlsx_files/*.xlsx
|
||||
*.pyc
|
||||
.pytest_cache/
|
||||
.cproject
|
||||
.project
|
||||
.pydevproject
|
||||
.settings/
|
||||
.DS_Store
|
||||
__pycache__
|
||||
.cache
|
||||
docs/html
|
||||
docs/latex
|
||||
.deps
|
||||
.dirstamp
|
||||
_temp.c
|
||||
examples/*
|
||||
!examples/*.c
|
||||
!examples/logo.png
|
||||
!examples/logo_small.png
|
||||
!examples/Makefile
|
||||
cov-int
|
||||
libxlsxwriter-coverity.tgz
|
||||
build
|
||||
|
||||
third_party/zlib-1.2.8/configure.log
|
||||
third_party/zlib-1.2.8/contrib/minizip/miniunz
|
||||
third_party/zlib-1.2.8/contrib/minizip/minizip
|
||||
third_party/zlib-1.2.8/example
|
||||
third_party/zlib-1.2.8/examplesh
|
||||
third_party/zlib-1.2.8/minigzip
|
||||
third_party/zlib-1.2.8/minigzipsh
|
||||
third_party/zlib-1.2.8/zlib.pc
|
||||
|
||||
cmake
|
||||
!cmake/FindMINIZIP.cmake
|
||||
!cmake/FindPackage.cmake
|
||||
!cmake/i686-toolchain.cmake
|
152
library/libxlsxwriter/.indent.pro
vendored
Normal file
@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Indent rules for libxlsxwriter.
|
||||
*
|
||||
* The rules for user defined typedefs can be update as follows:
|
||||
*
|
||||
perl -i -pe 'print and last if /[l]ibxlsxwriter typedefs/' .indent.pro
|
||||
ack -h typedef include/xlsxwriter/*.h src/*.c | perl -lne 'print "-T $1" if /\w+\s+\w+\s+(\w+)/' | sort >> .indent.pro
|
||||
*
|
||||
*/
|
||||
|
||||
/* Command line options used with GNU indent 2.2.10 */
|
||||
--braces-on-if-line
|
||||
--braces-on-struct-decl-line
|
||||
--case-indentation 4
|
||||
--continue-at-parentheses
|
||||
--declaration-comment-column 0
|
||||
--format-first-column-comments
|
||||
--honour-newlines
|
||||
--ignore-profile
|
||||
--indent-label 0
|
||||
--indent-level 4
|
||||
--no-space-after-function-call-names
|
||||
--no-tabs
|
||||
--swallow-optional-blank-lines
|
||||
|
||||
/* Typedefs used in the code. */
|
||||
-T int8_t
|
||||
-T int16_t
|
||||
-T int32_t
|
||||
-T int64_t
|
||||
-T uint8_t
|
||||
-T uint16_t
|
||||
-T uint32_t
|
||||
-T uint64_t
|
||||
-T ssize_t
|
||||
-T size_t
|
||||
-T time_t
|
||||
|
||||
-T LIST_ENTRY
|
||||
-T RB_ENTRY
|
||||
-T SLIST_ENTRY
|
||||
-T STAILQ_ENTRY
|
||||
-T TAILQ_ENTRY
|
||||
|
||||
/* libxlsxwriter typedefs. */
|
||||
-T lxw_app
|
||||
-T lxw_author_id
|
||||
-T lxw_autofilter
|
||||
-T lxw_border
|
||||
-T lxw_cell
|
||||
-T lxw_chart
|
||||
-T lxw_chart_axis
|
||||
-T lxw_chart_axis_display_unit
|
||||
-T lxw_chart_axis_label_alignment
|
||||
-T lxw_chart_axis_label_position
|
||||
-T lxw_chart_axis_tick_mark
|
||||
-T lxw_chart_axis_tick_position
|
||||
-T lxw_chart_axis_type
|
||||
-T lxw_chart_blank
|
||||
-T lxw_chart_custom_label
|
||||
-T lxw_chart_data_label
|
||||
-T lxw_chart_error_bar_axis
|
||||
-T lxw_chart_error_bar_cap
|
||||
-T lxw_chart_error_bar_direction
|
||||
-T lxw_chart_error_bar_type
|
||||
-T lxw_chart_fill
|
||||
-T lxw_chart_font
|
||||
-T lxw_chart_gridline
|
||||
-T lxw_chart_label_position
|
||||
-T lxw_chart_label_separator
|
||||
-T lxw_chart_legend
|
||||
-T lxw_chart_legend_position
|
||||
-T lxw_chart_line
|
||||
-T lxw_chart_line_dash_type
|
||||
-T lxw_chart_marker
|
||||
-T lxw_chart_marker_type
|
||||
-T lxw_chart_options
|
||||
-T lxw_chart_pattern
|
||||
-T lxw_chart_pattern_type
|
||||
-T lxw_chart_point
|
||||
-T lxw_chart_series
|
||||
-T lxw_chart_title
|
||||
-T lxw_chart_trendline_type
|
||||
-T lxw_chart_type
|
||||
-T lxw_chartsheet
|
||||
-T lxw_chartsheet_name
|
||||
-T lxw_col_options
|
||||
-T lxw_col_t
|
||||
-T lxw_color_t
|
||||
-T lxw_comment
|
||||
-T lxw_comment_options
|
||||
-T lxw_cond_format_hash_element
|
||||
-T lxw_cond_format_obj
|
||||
-T lxw_conditional_format
|
||||
-T lxw_content_types
|
||||
-T lxw_core
|
||||
-T lxw_custom
|
||||
-T lxw_custom_property
|
||||
-T lxw_data_val_obj
|
||||
-T lxw_data_validation
|
||||
-T lxw_datetime
|
||||
-T lxw_defined_name
|
||||
-T lxw_doc_properties
|
||||
-T lxw_drawing
|
||||
-T lxw_drawing_coords
|
||||
-T lxw_drawing_object
|
||||
-T lxw_drawing_rel_id
|
||||
-T lxw_error
|
||||
-T lxw_fill
|
||||
-T lxw_filter_rule
|
||||
-T lxw_filter_rule_obj
|
||||
-T lxw_font
|
||||
-T lxw_format
|
||||
-T lxw_hash_element
|
||||
-T lxw_hash_table
|
||||
-T lxw_header_footer_options
|
||||
-T lxw_heading_pair
|
||||
-T lxw_image_md5
|
||||
-T lxw_image_options
|
||||
-T lxw_merged_range
|
||||
-T lxw_metadata
|
||||
-T lxw_object_properties
|
||||
-T lxw_packager
|
||||
-T lxw_panes
|
||||
-T lxw_part_name
|
||||
-T lxw_print_area
|
||||
-T lxw_protection
|
||||
-T lxw_protection_obj
|
||||
-T lxw_rel_tuple
|
||||
-T lxw_relationships
|
||||
-T lxw_repeat_cols
|
||||
-T lxw_repeat_rows
|
||||
-T lxw_rich_string_tuple
|
||||
-T lxw_row
|
||||
-T lxw_row_col_options
|
||||
-T lxw_row_t
|
||||
-T lxw_selection
|
||||
-T lxw_series_data_point
|
||||
-T lxw_series_error_bars
|
||||
-T lxw_series_range
|
||||
-T lxw_sheet
|
||||
-T lxw_sst
|
||||
-T lxw_styles
|
||||
-T lxw_theme
|
||||
-T lxw_tuple
|
||||
-T lxw_vml
|
||||
-T lxw_vml_obj
|
||||
-T lxw_workbook
|
||||
-T lxw_workbook_options
|
||||
-T lxw_worksheet
|
||||
-T lxw_worksheet_init_data
|
||||
-T lxw_worksheet_name
|
42
library/libxlsxwriter/.travis.yml
Normal file
@ -0,0 +1,42 @@
|
||||
language: c
|
||||
dist: xenial
|
||||
|
||||
|
||||
compiler:
|
||||
- clang
|
||||
- gcc
|
||||
|
||||
env:
|
||||
- CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 USE_STANDARD_TMPFILE=1 CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 CFLAGS='-Werror -m32'
|
||||
- NO_VALGRIND=1 USE_SYSTEM_MINIZIP=1 CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 USE_DTOA_LIBRARY=1 CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 USE_NO_MD5=1 CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 USE_OPENSSL_MD5=1 CFLAGS='-Werror'
|
||||
- NO_VALGRIND=1 USE_FMEMOPEN=1 CFLAGS='-Werror'
|
||||
|
||||
addons:
|
||||
apt:
|
||||
update: true
|
||||
packages:
|
||||
- gcc-multilib
|
||||
- libminizip-dev
|
||||
- libssl-dev
|
||||
- valgrind
|
||||
- zlib1g-dev
|
||||
- zlib1g-dev:i386
|
||||
|
||||
before_install:
|
||||
- sudo pip install pytest
|
||||
|
||||
script:
|
||||
- make V=1
|
||||
- make test_functional V=1
|
||||
- make test_unit V=1
|
||||
- make examples V=1
|
||||
- make test_valgrind V=1
|
||||
- sudo make install V=1
|
||||
- sudo make uninstall V=1
|
||||
- make test_cmake V=1
|
||||
- make clean V=1
|
226
library/libxlsxwriter/CONTRIBUTING.md
Normal file
@ -0,0 +1,226 @@
|
||||
# libxlsxwriter: Reporting Bugs and submitting Pull Requests
|
||||
|
||||
|
||||
## Reporting Bugs
|
||||
|
||||
Here are some tips on reporting bugs in `libxlsxwriter`.
|
||||
|
||||
### Upgrade to the latest version of the library
|
||||
|
||||
Upgrade to the latest version of the library since the bug you are reporting
|
||||
may already be fixed.
|
||||
|
||||
Check the [Changes][changes] section of the documentation to see what has
|
||||
changed in the latest versions.
|
||||
|
||||
[changes]: http://libxlsxwriter.github.io/changes.html
|
||||
|
||||
You can check which version of `libxlsxwriter` that you are using by checking
|
||||
the `xlsxwriter.h` header file or by adding the following to your program:
|
||||
|
||||
```C
|
||||
#include <stdio.h>
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
printf("Libxlsxwriter version = %s\n", lxw_version());
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### Read the documentation
|
||||
|
||||
Read or search the `libxlsxwriter` [documentation][docs] to see if the issue
|
||||
you are encountering is already explained.
|
||||
|
||||
[docs]: http://libxlsxwriter.github.io/index.html
|
||||
|
||||
### Look at the example programs
|
||||
|
||||
There are many [examples programs][examples] in the distribution. Try to
|
||||
identify an example program that corresponds to your query and adapt it to use
|
||||
as a bug report.
|
||||
|
||||
[examples]: http://libxlsxwriter.github.io/examples.html
|
||||
|
||||
|
||||
### Use the xlsxwriter Issue Tracker
|
||||
|
||||
The [libxlsxwriter issue tracker][issues] is on GitHub.
|
||||
|
||||
[issues]: https://github.com/jmcnamara/libxlsxwriter/issues
|
||||
|
||||
|
||||
### Tips for submitting a bug report
|
||||
|
||||
1. Describe the problem as clearly and as concisely as possible.
|
||||
2. Include a sample program. This is probably the most important step.
|
||||
It is generally easier to describe a problem in code than in written
|
||||
prose.
|
||||
3. The sample program should be as small as possible to demonstrate the
|
||||
problem. Don't copy and paste large non-relevant sections of your
|
||||
program.
|
||||
|
||||
A sample bug report is shown below. This format helps analyze and respond to
|
||||
the bug report more quickly.
|
||||
|
||||
|
||||
> Subject: Issue with SOMETHING
|
||||
>
|
||||
> Greetings,
|
||||
>
|
||||
> I am using libxlsxwriter to do SOMETHING but it appears to do SOMETHING ELSE.
|
||||
>
|
||||
> I am using CC version X.Y.Z, OS = uname and libxlsxwriter x.y.z.
|
||||
>
|
||||
> Here is some code that demonstrates the problem:
|
||||
>
|
||||
>
|
||||
>```C
|
||||
>#include "xlsxwriter.h"
|
||||
>
|
||||
>int main() {
|
||||
>
|
||||
> lxw_workbook *workbook = workbook_new("bug_report.xlsx");
|
||||
> lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
>
|
||||
> worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
|
||||
> worksheet_write_number(worksheet, 1, 0, 123, NULL);
|
||||
>
|
||||
> return workbook_close(workbook);
|
||||
>}
|
||||
>```
|
||||
>
|
||||
|
||||
|
||||
# Pull Requests and Contributing to Libxlsxwriter
|
||||
|
||||
All patches and pull requests are welcome but in general you should start with
|
||||
an issue tracker to describe what you intend to do before you do it.
|
||||
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. Pull requests and new feature proposals must start with an [issue
|
||||
tracker][issues]. This serves as the focal point for the design discussion.
|
||||
2. Describe what you plan to do. If there are API changes add some code
|
||||
example to demonstrate them.
|
||||
3. Fork the repository.
|
||||
4. Run all the tests to make sure the current code works on your system using
|
||||
`make test`. See the [Running the Test Suite][tests] section of the docs
|
||||
for instructions.
|
||||
5. Create a feature branch for your new feature.
|
||||
|
||||
|
||||
[tests]: http://libxlsxwriter.github.io/running_the_tests.html
|
||||
|
||||
### Code Style
|
||||
|
||||
The code style is mainly K&R style with 4 space indents.
|
||||
|
||||
The author uses GNU indent (`gindent`) 2.2.10 with the following options:
|
||||
|
||||
```
|
||||
--braces-on-if-line
|
||||
--braces-on-struct-decl-line
|
||||
--case-indentation 4
|
||||
--continue-at-parentheses
|
||||
--declaration-comment-column 0
|
||||
--format-first-column-comments
|
||||
--honour-newlines
|
||||
--ignore-profile
|
||||
--indent-label 0
|
||||
--indent-level 4
|
||||
--no-space-after-function-call-names
|
||||
--no-tabs
|
||||
--swallow-optional-blank-lines
|
||||
```
|
||||
|
||||
The [indent configuration file][indentpro] is available in the repo. The code
|
||||
can be indented automatically if the same version of `gindent` is used with
|
||||
the following make command:
|
||||
|
||||
```shell
|
||||
make indent
|
||||
```
|
||||
|
||||
Note, make sure you have backed up your files or added them to the index
|
||||
before running this command.
|
||||
|
||||
In general follow the existing style in the code.
|
||||
|
||||
[indentpro]: https://github.com/jmcnamara/libxlsxwriter/blob/master/.indent.pro
|
||||
|
||||
### Writing and Running Tests
|
||||
|
||||
Any significant features should be accompanied by a test. See the `test`
|
||||
directory and the [Running the Test Suite][tests] section of the docs for
|
||||
details of the test setup.
|
||||
|
||||
The tests can be run as follows:
|
||||
|
||||
```shell
|
||||
make test
|
||||
```
|
||||
Same as:
|
||||
|
||||
```shell
|
||||
make test_unit
|
||||
make test_functional
|
||||
```
|
||||
|
||||
The functional tests require the Python module [pytest][pytest] as a test runner.
|
||||
|
||||
If you have `valgrind` installed you can use the test suite to check for memory leaks:
|
||||
|
||||
```shell
|
||||
make test_valgrind
|
||||
```
|
||||
|
||||
When you push your changes they will also be tested automatically using
|
||||
[Travis CI][travis].
|
||||
|
||||
[Travis]: https://travis-ci.org/jmcnamara/libxlsxwriter/
|
||||
[pytest]: http://pytest.org/
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
The `libxlsxwriter` documentation is written in Doxygen format in the header
|
||||
files and in additional `.dox` files in the `docs/src` directory of the
|
||||
repo. The documentation can be built as follows:
|
||||
|
||||
```shell
|
||||
make docs
|
||||
open docs/html/index.html
|
||||
```
|
||||
|
||||
|
||||
### Example programs
|
||||
|
||||
If applicable add an example program to the `examples` directory. Example
|
||||
files can be built using:
|
||||
|
||||
```shell
|
||||
make docs
|
||||
```
|
||||
|
||||
### Copyright and License
|
||||
|
||||
Copyright remains with the original author. Do not include additional
|
||||
copyright claims or Licensing requirements. GitHub and the `git` repository
|
||||
will record your contribution and it will be acknowledged it in the Changes
|
||||
file.
|
||||
|
||||
|
||||
### Submitting the Pull Request
|
||||
|
||||
If your change involves several incremental `git` commits then `rebase` or
|
||||
`squash` them onto another branch so that the Pull Request is a single commit
|
||||
or a small number of logical commits.
|
||||
|
||||
Push your changes to GitHub and submit the Pull Request with a hash link to
|
||||
the to the Issue tracker that was opened above.
|
1039
library/libxlsxwriter/Changes.txt
Normal file
85
library/libxlsxwriter/ISSUE_TEMPLATE.md
Normal file
@ -0,0 +1,85 @@
|
||||
# libxlsxwriter: Reporting Bugs
|
||||
|
||||
Here are some tips on reporting bugs in `libxlsxwriter`.
|
||||
|
||||
### Upgrade to the latest version of the library
|
||||
|
||||
Upgrade to the latest version of the library since the bug you are reporting
|
||||
may already be fixed.
|
||||
|
||||
Check the [Changes][changes] section of the documentation to see what has
|
||||
changed in the latest versions.
|
||||
|
||||
[changes]: http://libxlsxwriter.github.io/changes.html
|
||||
|
||||
You can check which version of `libxlsxwriter` that you are using by checking
|
||||
the `xlsxwriter.h` header file or by adding the following to your program:
|
||||
|
||||
```C
|
||||
#include <stdio.h>
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
printf("Libxlsxwriter version = %s\n", lxw_version());
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
### Read the documentation
|
||||
|
||||
Read or search the `libxlsxwriter` [documentation][docs] to see if the issue
|
||||
you are encountering is already explained.
|
||||
|
||||
[docs]: http://libxlsxwriter.github.io/index.html
|
||||
|
||||
### Look at the example programs
|
||||
|
||||
There are many [examples programs][examples] in the distribution. Try to
|
||||
identify an example program that corresponds to your query and adapt it to use
|
||||
as a bug report.
|
||||
|
||||
[examples]: http://libxlsxwriter.github.io/examples.html
|
||||
|
||||
|
||||
### Tips for submitting a bug report
|
||||
|
||||
1. Describe the problem as clearly and as concisely as possible.
|
||||
2. Include a sample program. This is probably the most important step.
|
||||
It is generally easier to describe a problem in code than in written
|
||||
prose.
|
||||
3. The sample program should be as small as possible to demonstrate the
|
||||
problem. Don't copy and paste large non-relevant sections of your
|
||||
program.
|
||||
|
||||
A sample bug report is shown below. This format helps analyze and respond to
|
||||
the bug report more quickly.
|
||||
|
||||
|
||||
> Subject: Issue with SOMETHING
|
||||
>
|
||||
> Greetings,
|
||||
>
|
||||
> I am using libxlsxwriter to do SOMETHING but it appears to do SOMETHING ELSE.
|
||||
>
|
||||
> I am using CC version X.Y.Z, OS = uname and libxlsxwriter x.y.z.
|
||||
>
|
||||
> Here is some code that demonstrates the problem:
|
||||
>
|
||||
>
|
||||
>```C
|
||||
>#include "xlsxwriter.h"
|
||||
>
|
||||
>int main() {
|
||||
>
|
||||
> lxw_workbook *workbook = workbook_new("bug_report.xlsx");
|
||||
> lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
>
|
||||
> worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
|
||||
> worksheet_write_number(worksheet, 1, 0, 123, NULL);
|
||||
>
|
||||
> return workbook_close(workbook);
|
||||
>}
|
||||
>```
|
||||
>
|
207
library/libxlsxwriter/License.txt
Normal file
@ -0,0 +1,207 @@
|
||||
/**
|
||||
|
||||
@page license License
|
||||
|
||||
Libxlsxwriter is released under a FreeBSD license:
|
||||
|
||||
Copyright 2014-2021, John McNamara <jmcnamara@cpan.org>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice,
|
||||
this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are
|
||||
those of the authors and should not be interpreted as representing
|
||||
official policies, either expressed or implied, of the FreeBSD Project.
|
||||
|
||||
|
||||
Libxlsxwriter includes `queue.h` and `tree.h` from FreeBSD, the `minizip`
|
||||
component of `zlib`. It also includes and uses the optional `tmpfileplus`,
|
||||
`md5` and `emyg_dtoa`. These components which have the following licenses:
|
||||
|
||||
|
||||
Queue.h from FreeBSD:
|
||||
|
||||
Copyright (c) 1991, 1993
|
||||
The Regents of the University of California. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
4. Neither the name of the University nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software
|
||||
without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
SUCH DAMAGE.
|
||||
|
||||
|
||||
Tree.h from FreeBSD:
|
||||
|
||||
Copyright 2002 Niels Provos <provos@citi.umich.edu>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
The `minizip` files used in the libxlsxwriter source tree are taken from the
|
||||
`zlib` ` contrib/minizip` directory. [Zlib](http://www.zlib.net) has the
|
||||
following License/Copyright:
|
||||
|
||||
(C) 1995-2013 Jean-loup Gailly and Mark Adler
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
|
||||
Jean-loup Gailly Mark Adler
|
||||
jloup@gzip.org madler@alumni.caltech.edu
|
||||
|
||||
The `minizip` files have the following additional copyright declarations:
|
||||
|
||||
Copyright (C) 1998-2010 Gilles Vollant
|
||||
(minizip) ( http://www.winimage.com/zLibDll/minizip.html )
|
||||
|
||||
Modifications for Zip64 support
|
||||
Copyright (C) 2009-2010 Mathias Svensson ( http://result42.com )
|
||||
|
||||
Note, it is possible to compile libxlsxwriter without statically linking the
|
||||
`minizip` files and instead dynamically linking to `lminizip`, see
|
||||
@ref gsg_minizip.
|
||||
|
||||
[Tmpfileplus](http://www.di-mgt.com.au/c_function_to_create_temp_file.html)
|
||||
has the following license:
|
||||
|
||||
This Source Code Form is subject to the terms of the Mozilla Public
|
||||
License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
Copyright (c) 2012-16 David Ireland, DI Management Services Pty Ltd
|
||||
<http://www.di-mgt.com.au/contact/>.
|
||||
|
||||
See the [Mozilla Public License, v. 2.0](http://mozilla.org/MPL/2.0/).
|
||||
|
||||
Note, it is possible to compile libxlsxwriter using the standard library
|
||||
`tmpfile()` function instead of `tmpfileplus`, see @ref gsg_tmpdir.
|
||||
|
||||
The [Milo Yip DTOA library](https://github.com/miloyip/dtoa-benchmark) for
|
||||
converting doubles to strings. It has the following license:
|
||||
|
||||
Copyright (C) 2015 Doug Currie
|
||||
based on dtoa_milo.h
|
||||
Copyright (C) 2014 Milo Yip
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
|
||||
This Milo Yip DTOA library (emyg_dtoa) is uses to avoid issues where the
|
||||
standard sprintf() dtoa function changes output based on locale settings. It
|
||||
is also 40-50% faster than the standard dtoa for raw numeric data. The use of
|
||||
this library is optional. If you wish to use it you can pass
|
||||
`USE_DTOA_LIBRARY=1` to make when compiling.
|
||||
|
||||
[Openwall MD5](https://openwall.info/wiki/people/solar/software/public-domain-source-code/md5)
|
||||
has the following licence:
|
||||
|
||||
This software was written by Alexander Peslyak in 2001. No copyright is
|
||||
claimed, and the software is hereby placed in the public domain.
|
||||
In case this attempt to disclaim copyright and place the software in the
|
||||
public domain is deemed null and void, then the software is
|
||||
Copyright (c) 2001 Alexander Peslyak and it is hereby released to the
|
||||
general public under the following terms:
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted.
|
||||
|
||||
There's ABSOLUTELY NO WARRANTY, express or implied.
|
||||
|
||||
(This is a heavily cut-down "BSD license".)
|
||||
|
||||
Note, the MD5 library is used to avoid including duplicate image files in the
|
||||
xlsx file. If you don't want to use this code, and the additional licence, you
|
||||
can use OpenSSL's MD5 functions instead by passing `USE_OPENSSL_MD5=1` to
|
||||
make. If this functionality isn't required it is possible to compile
|
||||
libxlsxwriter without image deduplication by passing `USE_NO_MD5=1` to make.
|
||||
|
||||
See also @ref gsg_md5.
|
||||
|
||||
Next: @ref changes
|
||||
*/
|
130
library/libxlsxwriter/PULL_REQUEST_TEMPLATE.md
Normal file
@ -0,0 +1,130 @@
|
||||
# libxlsxwriter: Submitting Pull Requests
|
||||
|
||||
# Pull Requests and Contributing to Libxlsxwriter
|
||||
|
||||
All patches and pull requests are welcome but in general you should start with
|
||||
an issue tracker to describe what you intend to do before you do it.
|
||||
|
||||
|
||||
### Getting Started
|
||||
|
||||
1. Pull requests and new feature proposals must start with an [issue
|
||||
tracker][issues]. This serves as the focal point for the design discussion.
|
||||
2. Describe what you plan to do. If there are API changes add some code
|
||||
example to demonstrate them.
|
||||
3. Fork the repository.
|
||||
4. Run all the tests to make sure the current code works on your system using
|
||||
`make test`. See the [Running the Test Suite][tests] section of the docs
|
||||
for instructions.
|
||||
5. Create a feature branch for your new feature.
|
||||
|
||||
|
||||
[tests]: http://libxlsxwriter.github.io/running_the_tests.html
|
||||
|
||||
### Code Style
|
||||
|
||||
The code style is mainly K&R style with 4 space indents.
|
||||
|
||||
The author uses GNU indent (`gindent`) 2.2.10 with the following options:
|
||||
|
||||
```
|
||||
--braces-on-if-line
|
||||
--braces-on-struct-decl-line
|
||||
--case-indentation 4
|
||||
--continue-at-parentheses
|
||||
--declaration-comment-column 0
|
||||
--format-first-column-comments
|
||||
--honour-newlines
|
||||
--ignore-profile
|
||||
--indent-label 0
|
||||
--indent-level 4
|
||||
--no-space-after-function-call-names
|
||||
--no-tabs
|
||||
--swallow-optional-blank-lines
|
||||
```
|
||||
|
||||
The [indent configuration file][indentpro] is available in the repo. The code
|
||||
can be indented automatically if the same version of `gindent` is used with
|
||||
the following make command:
|
||||
|
||||
```shell
|
||||
make indent
|
||||
```
|
||||
|
||||
Note, make sure you have backed up your files or added them to the index
|
||||
before running this command.
|
||||
|
||||
In general follow the existing style in the code.
|
||||
|
||||
[indentpro]: https://github.com/jmcnamara/libxlsxwriter/blob/master/.indent.pro
|
||||
|
||||
### Writing and Running Tests
|
||||
|
||||
Any significant features should be accompanied by a test. See the `test`
|
||||
directory and the [Running the Test Suite][tests] section of the docs for
|
||||
details of the test setup.
|
||||
|
||||
The tests can be run as follows:
|
||||
|
||||
```shell
|
||||
make test
|
||||
```
|
||||
Same as:
|
||||
|
||||
```shell
|
||||
make test_unit
|
||||
make test_functional
|
||||
```
|
||||
|
||||
The functional tests require the Python module [pytest][pytest] as a test runner.
|
||||
|
||||
If you have `valgrind` installed you can use the test suite to check for memory leaks:
|
||||
|
||||
```shell
|
||||
make test_valgrind
|
||||
```
|
||||
|
||||
When you push your changes they will also be tested automatically using
|
||||
[Travis CI][travis].
|
||||
|
||||
[Travis]: https://travis-ci.org/jmcnamara/libxlsxwriter/
|
||||
[pytest]: http://pytest.org/
|
||||
|
||||
|
||||
### Documentation
|
||||
|
||||
The `libxlsxwriter` documentation is written in Doxygen format in the header
|
||||
files and in additional `.dox` files in the `docs/src` directory of the
|
||||
repo. The documentation can be built as follows:
|
||||
|
||||
```shell
|
||||
make docs
|
||||
open docs/html/index.html
|
||||
```
|
||||
|
||||
|
||||
### Example programs
|
||||
|
||||
If applicable add an example program to the `examples` directory. Example
|
||||
files can be built using:
|
||||
|
||||
```shell
|
||||
make docs
|
||||
```
|
||||
|
||||
### Copyright and License
|
||||
|
||||
Copyright remains with the original author. Do not include additional
|
||||
copyright claims or Licensing requirements. GitHub and the `git` repository
|
||||
will record your contribution and it will be acknowledged it in the Changes
|
||||
file.
|
||||
|
||||
|
||||
### Submitting the Pull Request
|
||||
|
||||
If your change involves several incremental `git` commits then `rebase` or
|
||||
`squash` them onto another branch so that the Pull Request is a single commit
|
||||
or a small number of logical commits.
|
||||
|
||||
Push your changes to GitHub and submit the Pull Request with a hash link to
|
||||
the to the Issue tracker that was opened above.
|
83
library/libxlsxwriter/Readme.md
Normal file
@ -0,0 +1,83 @@
|
||||
# libxlsxwriter
|
||||
|
||||
|
||||
Libxlsxwriter: A C library for creating Excel XLSX files.
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
## The libxlsxwriter library
|
||||
|
||||
Libxlsxwriter is a C library that can be used to write text, numbers, formulas
|
||||
and hyperlinks to multiple worksheets in an Excel 2007+ XLSX file.
|
||||
|
||||
It supports features such as:
|
||||
|
||||
- 100% compatible Excel XLSX files.
|
||||
- Full Excel formatting.
|
||||
- Merged cells.
|
||||
- Defined names.
|
||||
- Autofilters.
|
||||
- Charts.
|
||||
- Data validation and drop down lists.
|
||||
- Conditional formatting.
|
||||
- Worksheet PNG/JPEG/GIF images.
|
||||
- Cell comments.
|
||||
- Support for adding Macros.
|
||||
- Memory optimization mode for writing large files.
|
||||
- Source code available on [GitHub](https://github.com/jmcnamara/libxlsxwriter).
|
||||
- FreeBSD license.
|
||||
- ANSI C.
|
||||
- Works with GCC, Clang, Xcode, MSVC 2015, ICC, TCC, MinGW, MingGW-w64/32.
|
||||
- Works on Linux, FreeBSD, OpenBSD, OS X, iOS and Windows. Also works on MSYS/MSYS2 and Cygwin.
|
||||
- Compiles for 32 and 64 bit.
|
||||
- Compiles and works on big and little endian systems.
|
||||
- The only dependency is on `zlib`.
|
||||
|
||||
Here is an example that was used to create the spreadsheet shown above:
|
||||
|
||||
|
||||
```C
|
||||
#include "xlsxwriter.h"
|
||||
|
||||
int main() {
|
||||
|
||||
/* Create a new workbook and add a worksheet. */
|
||||
lxw_workbook *workbook = workbook_new("demo.xlsx");
|
||||
lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
|
||||
|
||||
/* Add a format. */
|
||||
lxw_format *format = workbook_add_format(workbook);
|
||||
|
||||
/* Set the bold property for the format */
|
||||
format_set_bold(format);
|
||||
|
||||
/* Change the column width for clarity. */
|
||||
worksheet_set_column(worksheet, 0, 0, 20, NULL);
|
||||
|
||||
/* Write some simple text. */
|
||||
worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
|
||||
|
||||
/* Text with formatting. */
|
||||
worksheet_write_string(worksheet, 1, 0, "World", format);
|
||||
|
||||
/* Write some numbers. */
|
||||
worksheet_write_number(worksheet, 2, 0, 123, NULL);
|
||||
worksheet_write_number(worksheet, 3, 0, 123.456, NULL);
|
||||
|
||||
/* Insert an image. */
|
||||
worksheet_insert_image(worksheet, 1, 2, "logo.png");
|
||||
|
||||
workbook_close(workbook);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
|
||||
|
||||
See the [full documentation](http://libxlsxwriter.github.io) for the getting
|
||||
started guide, a tutorial, the main API documentation and examples.
|
||||
|
36
library/libxlsxwriter/cocoapods/libxlsxwriter-umbrella.h
Normal file
@ -0,0 +1,36 @@
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
#import "../xlsxwriter.h"
|
||||
#import "app.h"
|
||||
#import "chart.h"
|
||||
#import "chartsheet.h"
|
||||
#import "comment.h"
|
||||
#import "common.h"
|
||||
#import "content_types.h"
|
||||
#import "core.h"
|
||||
#import "custom.h"
|
||||
#import "drawing.h"
|
||||
#import "format.h"
|
||||
#import "hash_table.h"
|
||||
#import "metadata.h"
|
||||
#import "packager.h"
|
||||
#import "relationships.h"
|
||||
#import "shared_strings.h"
|
||||
#import "styles.h"
|
||||
#import "theme.h"
|
||||
#import "third_party/emyg_dtoa.h"
|
||||
#import "third_party/ioapi.h"
|
||||
#import "third_party/md5.h"
|
||||
#import "third_party/queue.h"
|
||||
#import "third_party/tmpfileplus.h"
|
||||
#import "third_party/tree.h"
|
||||
#import "third_party/zip.h"
|
||||
#import "utility.h"
|
||||
#import "vml.h"
|
||||
#import "workbook.h"
|
||||
#import "worksheet.h"
|
||||
#import "xmlwriter.h"
|
||||
|
||||
FOUNDATION_EXPORT double xlsxwriterVersionNumber;
|
||||
FOUNDATION_EXPORT const unsigned char xlsxwriterVersionString[];
|
||||
|
7
library/libxlsxwriter/cocoapods/libxlsxwriter.modulemap
Normal file
@ -0,0 +1,7 @@
|
||||
framework module xlsxwriter {
|
||||
umbrella header "xlsxwriter/libxlsxwriter-umbrella.h"
|
||||
header "xlsxwriter.h"
|
||||
|
||||
export *
|
||||
module * { export * }
|
||||
}
|
4
library/libxlsxwriter/dev/release/Readme.txt
Normal file
@ -0,0 +1,4 @@
|
||||
|
||||
This directory contains some release utilities that are mainly useful
|
||||
to the library developer.
|
||||
|
7
library/libxlsxwriter/dev/release/fix_dox.sh
Executable file
@ -0,0 +1,7 @@
|
||||
#/bin/bash
|
||||
|
||||
# Perform some minor clean-ups/fixes to the docs.
|
||||
|
||||
perl -i -pe "s/_page/_8h/" html/pages.html
|
||||
perl -i ../dev/release/fix_example_docs.pl html/examples.html
|
||||
cp menudata.js html
|
124
library/libxlsxwriter/dev/release/fix_example_docs.pl
Normal file
@ -0,0 +1,124 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Simple program to arrange the example programs in a user defined order
|
||||
# instead of a sorted order. Also add a caption.
|
||||
#
|
||||
# Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
# The required example order and descriptions.
|
||||
my @examples = (
|
||||
[ 'hello.c', 'A simple hello world example' ],
|
||||
[ 'anatomy.c', 'The anatomy of a libxlsxwriter program' ],
|
||||
[ 'demo.c', 'Demo of some of the libxlsxwriter features' ],
|
||||
[ 'tutorial1.c', 'Tutorial 1 from the documentation' ],
|
||||
[ 'tutorial2.c', 'Tutorial 2 from the documentation' ],
|
||||
[ 'tutorial3.c', 'Tutorial 3 from the documentation' ],
|
||||
[ 'format_font.c', 'Example of writing data with font formatting' ],
|
||||
[ 'format_num_format.c', 'Example of writing data with number formatting' ],
|
||||
[ 'dates_and_times01.c', 'Writing dates and times with numbers' ],
|
||||
[ 'dates_and_times02.c', 'Writing dates and times with datetime' ],
|
||||
[ 'dates_and_times03.c', 'Writing dates and times with Unix datetimes' ],
|
||||
[ 'dates_and_times04.c', 'Dates and times with different formats' ],
|
||||
[ 'hyperlinks.c', 'A example of writing urls/hyperlinks' ],
|
||||
[ 'rich_strings.c', 'A example of writing "rich" multi-format strings' ],
|
||||
[ 'array_formula.c', 'A example of using array formulas' ],
|
||||
[ 'dynamic_arrays.c', 'A example of using Excel 365 dynamic array formulas' ],
|
||||
[ 'utf8.c', 'A example of some UTF-8 text' ],
|
||||
[ 'constant_memory.c', 'Write a large file with constant memory usage' ],
|
||||
[ 'merge_range.c', 'Create a merged range of cells' ],
|
||||
[ 'merge_rich_string.c', 'Create a merged range with a rich string' ],
|
||||
[ 'autofilter.c', 'An example of a worksheet autofilter' ],
|
||||
[ 'data_validate.c', 'Examples of worksheet data validation and drop down lists' ],
|
||||
[ 'conditional_format1.c', 'A simple conditional formatting example' ],
|
||||
[ 'conditional_format2.c', 'An advanced conditional formatting example' ],
|
||||
[ 'images.c', 'Example of adding images to a worksheet.' ],
|
||||
[ 'image_buffer.c', 'Example of adding an image from a memory buffer.' ],
|
||||
[ 'headers_footers.c', 'Example of adding worksheet headers/footers' ],
|
||||
[ 'defined_name.c', 'Example of how to create defined names' ],
|
||||
[ 'outline.c', 'Example of grouping and outlines' ],
|
||||
[ 'outline_collapsed.c', 'Example of grouping and collapsed outlines' ],
|
||||
[ 'background.c', 'Example of how to set the background image for a worksheet' ],
|
||||
[ 'tab_colors.c', 'Example of how to set worksheet tab colors' ],
|
||||
[ 'diagonal_border.c', 'Example of how to set a worksheet cell diagonal border.' ],
|
||||
[ 'hide_sheet.c', 'Example of hiding a worksheet' ],
|
||||
[ 'doc_properties.c', 'Example of setting workbook doc properties' ],
|
||||
[ 'doc_custom_properties.c','Example of setting custom doc properties' ],
|
||||
[ 'worksheet_protection.c', 'Example of enabling worksheet protection' ],
|
||||
[ 'hide_row_col.c', 'Example of hiding worksheet rows and columns' ],
|
||||
[ 'comments1.c', 'Example of adding cell comments to a worksheet' ],
|
||||
[ 'comments2.c', 'Example of adding cell comments with options' ],
|
||||
[ 'macro.c', 'Example of adding a VBA macro to a workbook' ],
|
||||
[ 'panes.c', 'Example of how to create worksheet panes' ],
|
||||
[ 'ignore_errors.c', 'Example of ignoring worksheet errors/warnings' ],
|
||||
[ 'lambda.c', 'Example of using the EXCEL 365+ LAMBDA() function' ],
|
||||
[ 'chart.c', 'Example of a simple column chart' ],
|
||||
[ 'chart_area.c', 'Examples of area charts' ],
|
||||
[ 'chart_bar.c', 'Examples of bar charts' ],
|
||||
[ 'chart_column.c', 'Examples of column charts' ],
|
||||
[ 'chart_line.c', 'Example of a line chart' ],
|
||||
[ 'chart_scatter.c', 'Examples of scatter charts' ],
|
||||
[ 'chart_radar.c', 'Examples of radar charts' ],
|
||||
[ 'chart_pie.c', 'Examples of pie charts' ],
|
||||
[ 'chart_doughnut.c', 'Examples of doughnut charts' ],
|
||||
[ 'chart_clustered.c', 'Examples of clustered category chart' ],
|
||||
[ 'chart_data_table.c', 'Examples of charts with data tables' ],
|
||||
[ 'chart_data_tools.c', 'Examples of charts data tools' ],
|
||||
[ 'chart_data_labels.c', 'Examples of charts data labels' ],
|
||||
[ 'chart_fonts.c', 'Examples of using charts fonts' ],
|
||||
[ 'chart_pattern.c', 'Examples of using charts patterns' ],
|
||||
[ 'chart_styles.c', 'Examples of built-in charts styles' ],
|
||||
[ 'chartsheet.c', 'Example of a chartsheet chart' ],
|
||||
);
|
||||
|
||||
# Convert the array refs to a hash for lookups.
|
||||
my %examples;
|
||||
for my $example (@examples) {
|
||||
$examples{$example->[0]} = 1;
|
||||
}
|
||||
|
||||
my $in_list = 0;
|
||||
|
||||
while ( my $line = <> ) {
|
||||
|
||||
# Print all lines not in the <ul> list.
|
||||
print $line if !$in_list;
|
||||
|
||||
# Check for <ul> list.
|
||||
if ( $line =~ /<div class="textblock">/ ) {
|
||||
$in_list = 1;
|
||||
}
|
||||
|
||||
# Capture the <li> items of the list.
|
||||
if ( $line =~ /<li><a class="el" href="[^"]+">([^<]+)/ ) {
|
||||
my $example = $1;
|
||||
|
||||
# Warn if there are any new/unkown items.
|
||||
if ( !exists $examples{$example} ) {
|
||||
warn "$0 Unknown example: $example\n";
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
# At the end of the <ul> list print out the <li> items in user defined order.
|
||||
if ( $line =~ m{^</ul>} ) {
|
||||
$in_list = 0;
|
||||
|
||||
for my $aref ( @examples ) {
|
||||
my $example = $aref->[0];
|
||||
my $filename = $aref->[0];
|
||||
my $desc = $aref->[1];
|
||||
|
||||
$example =~ s/\.c/_8c-example.html/;
|
||||
|
||||
printf qq(<li><a class="el" href="%s">%s</a> %s</li>\n\n),
|
||||
$example, $filename, $desc;
|
||||
}
|
||||
print $line;
|
||||
}
|
||||
}
|
||||
|
||||
__END__
|
78
library/libxlsxwriter/dev/release/fix_example_links.pl
Normal file
@ -0,0 +1,78 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Simple program to generate the examples.dox file from a simple text file,
|
||||
# with links to the next/previous examples.
|
||||
#
|
||||
# Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
my @examples;
|
||||
my @sections;
|
||||
my @links;
|
||||
my $buffer = '';
|
||||
|
||||
|
||||
# Sample through the example sections and break the text into blocks.
|
||||
while ( my $line = <> ) {
|
||||
|
||||
# Ignore comments in the input file.
|
||||
next if $line =~ /^#/;
|
||||
|
||||
# Match the start of an example block.
|
||||
if ( $line =~ /^\@example/ ) {
|
||||
chomp $buffer;
|
||||
|
||||
# Store the example name and the section body.
|
||||
push @examples, $line;
|
||||
push @sections, $buffer;
|
||||
$buffer = '';
|
||||
next;
|
||||
}
|
||||
|
||||
$buffer .= $line;
|
||||
}
|
||||
|
||||
# Store the last example section and omit the first blank element.
|
||||
push @sections, $buffer;
|
||||
shift @sections;
|
||||
|
||||
# Generate a set of @ref links targets from the example program names.
|
||||
for ( @examples ) {
|
||||
my $link = $_;
|
||||
chomp $link;
|
||||
$link =~ s/\@example //;
|
||||
push @links, [ $link, $link ];
|
||||
}
|
||||
|
||||
# Add the first and last links back to the examples.
|
||||
unshift @links, [ "examples", "Examples page" ];
|
||||
push @links, [ "examples", "Examples page" ];
|
||||
|
||||
# Add the start of the Doxygen header.
|
||||
print "/**\n";
|
||||
print "\@page examples Example Programs\n\n";
|
||||
|
||||
# Print out each section.
|
||||
for my $i ( 0 .. @examples - 1 ) {
|
||||
|
||||
print $examples[$i];
|
||||
|
||||
# Add a simple header table with next/previous links.
|
||||
printf qq{\n<table width="600">\n};
|
||||
printf qq{<tr>\n};
|
||||
printf qq{ <td>\@ref %s "<< %s"</td>\n},
|
||||
$links[$i]->[0], $links[$i]->[1];
|
||||
printf qq{ <td align="right">\@ref %s "%s >>"</td>\n},
|
||||
$links[ $i + 2 ]->[0], $links[ $i + 2 ]->[1];
|
||||
printf qq{</tr>\n};
|
||||
printf qq{</table>\n};
|
||||
|
||||
print $sections[$i], "\n\n\n\n";
|
||||
}
|
||||
|
||||
# Print the end of the doxygen comment.
|
||||
print "*/\n";
|
||||
|
49
library/libxlsxwriter/dev/release/gen_error_strings.pl
Normal file
@ -0,0 +1,49 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Simple program to generate the string array for the lxw_strerror() function
|
||||
# from the Doxygen comments in the lxw_error enum:
|
||||
#
|
||||
# perl dev/release/gen_error_strings.pl include/xlsxwriter/common.h
|
||||
#
|
||||
# Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
my $in_enum = 0;
|
||||
my @strings;
|
||||
|
||||
my $filename = shift || 'include/xlsxwriter/common.h';
|
||||
open my $fh, '<', $filename or die "Couldn't open $filename: $!\n";
|
||||
|
||||
|
||||
while (<$fh>) {
|
||||
|
||||
$in_enum = 1 if /typedef enum lxw_error/;
|
||||
$in_enum = 0 if /} lxw_error;/;
|
||||
|
||||
# Match doxygen strings in the enum.
|
||||
if ($in_enum && m{/\*\*}) {
|
||||
# Strip the comment parts.
|
||||
s{/\*\*}{};
|
||||
s{\*/}{};
|
||||
s{^\s+}{};
|
||||
s{\s+$}{};
|
||||
push @strings, $_;
|
||||
}
|
||||
}
|
||||
|
||||
# Print out an array of strings based on the doxygen comments.
|
||||
print "\n";
|
||||
print "// Copy to src/utility.c\n\n";
|
||||
print "char *error_strings[LXW_MAX_ERRNO + 1] = {\n";
|
||||
for my $string (@strings) {
|
||||
print qq{ "$string",\n};
|
||||
}
|
||||
print qq{ "Unknown error number."\n};
|
||||
print "};\n\n";
|
||||
|
||||
|
||||
|
||||
|
36
library/libxlsxwriter/dev/release/gen_umbrella_file.pl
Normal file
@ -0,0 +1,36 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Simple program to generate the coccoapods unbrella file.
|
||||
# Run from the libxlsxwriter root dir.
|
||||
#
|
||||
# Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
use warnings;
|
||||
use strict;
|
||||
use File::Find;
|
||||
|
||||
my @includes;
|
||||
|
||||
# Callback to match header files.
|
||||
sub match_include {
|
||||
push @includes, $File::Find::name if /^.*\.h\z/s;
|
||||
}
|
||||
|
||||
# Use File::Find to find header files.
|
||||
find({wanted => \&match_include}, 'include/xlsxwriter');
|
||||
|
||||
# Sort and remove leading dirs from the include files.
|
||||
@includes = sort @includes;
|
||||
s{^include/xlsxwriter/}{} for @includes;
|
||||
|
||||
|
||||
# Generate the unbrella file.
|
||||
print qq{#import <Foundation/Foundation.h>\n\n};
|
||||
print qq{#import "../xlsxwriter.h"\n};
|
||||
|
||||
print qq{#import "$_"\n} for @includes;
|
||||
|
||||
print qq{\n};
|
||||
print qq{FOUNDATION_EXPORT double xlsxwriterVersionNumber;\n};
|
||||
print qq{FOUNDATION_EXPORT const unsigned char xlsxwriterVersionString[];\n\n};
|
50
library/libxlsxwriter/dev/release/gen_windows_def_file.pl
Normal file
@ -0,0 +1,50 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
#
|
||||
# Simple program to generate a Windows .def file from the exported symbols in
|
||||
# libxlsxwriter.a.
|
||||
#
|
||||
# perl dev/release/gen_windows_def_file.pl lib/libxlsxwriter.a
|
||||
#
|
||||
# Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
|
||||
#
|
||||
use warnings;
|
||||
use strict;
|
||||
|
||||
my $lib_file = shift;
|
||||
|
||||
die "$0: Path to .a lib file required.\n" if !$lib_file;
|
||||
die "$0: File '$lib_file' not found\n" if !-e $lib_file;
|
||||
|
||||
# Get the symbols from the libxlsxwriter.a file.
|
||||
my @symbols = `nm $lib_file`;
|
||||
my %unique;
|
||||
|
||||
for my $symbol ( @symbols ) {
|
||||
|
||||
chomp $symbol;
|
||||
|
||||
# Get the last field in the row.
|
||||
my @fields = split " ", $symbol;
|
||||
$symbol = $fields[-1];
|
||||
|
||||
next unless $symbol;
|
||||
|
||||
# Skip symbols not belonging to libxlsxwriter.
|
||||
next if $symbol !~ /^_(lxw|work|format|chart|new)/;
|
||||
|
||||
# Skip some the RedBlack functions.
|
||||
next if $symbol =~ m{RB};
|
||||
|
||||
# Strip the leading underscore.
|
||||
$symbol =~ s/^_//;
|
||||
|
||||
# Remove duplicate instances of some symbols.
|
||||
$unique{$symbol}++;
|
||||
}
|
||||
|
||||
# Generate the .def file.
|
||||
print "EXPORTS\r\n";
|
||||
for my $symbol ( sort keys %unique ) {
|
||||
print " ", $symbol, "\r\n";
|
||||
}
|
10
library/libxlsxwriter/dev/release/pkg-config.txt
Normal file
@ -0,0 +1,10 @@
|
||||
prefix=@PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
includedir=${prefix}/include
|
||||
libdir=${exec_prefix}/lib
|
||||
|
||||
Name: libxlsxwriter
|
||||
Description: A C library for creating Excel XLSX files
|
||||
Version: @VERSION@
|
||||
Cflags: -I${includedir}
|
||||
Libs: -L${libdir} -lxlsxwriter -lz
|
332
library/libxlsxwriter/dev/release/release_check.sh
Executable file
@ -0,0 +1,332 @@
|
||||
#!/bin/bash
|
||||
|
||||
clear
|
||||
echo "|"
|
||||
echo "| Pre-release checks."
|
||||
echo "|"
|
||||
echo
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Run tests.
|
||||
#
|
||||
function check_test_status {
|
||||
|
||||
echo
|
||||
echo -n "Are all tests passing? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Run all tests now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: make test\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Running tests...";
|
||||
make test
|
||||
check_test_status
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Run test for C++ const correctness.
|
||||
#
|
||||
function check_test_const {
|
||||
|
||||
echo
|
||||
echo -n "Is the const test passing? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Run test now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: make test_const\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Running test...";
|
||||
make test_const
|
||||
check_test_const
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Run spellcheck.
|
||||
#
|
||||
function check_spellcheck {
|
||||
|
||||
echo
|
||||
echo -n "Is the spellcheck ok? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Run spellcheck now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: make spellcheck\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Running spellcheck...";
|
||||
make spellcheck
|
||||
check_spellcheck
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Check Changes file is up to date.
|
||||
#
|
||||
function check_changefile {
|
||||
clear
|
||||
|
||||
echo "Latest change in Changes file: "
|
||||
perl -ne '$rev++ if /^##/; exit if $rev > 1; print " | $_"' Changes.txt
|
||||
|
||||
echo
|
||||
echo -n "Is the Changes file updated? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please update the Change file to proceed.\n";
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Check the versions are up to date.
|
||||
#
|
||||
function check_versions {
|
||||
|
||||
clear
|
||||
echo
|
||||
echo "Latest file versions: "
|
||||
echo
|
||||
|
||||
awk '/s.version / {print "\t" FILENAME "\t" $1 "\t" $3}' libxlsxwriter.podspec
|
||||
awk '/ LXW/ {print "\t" FILENAME "\t" $2 "\t" $3}' include/xlsxwriter.h
|
||||
|
||||
echo
|
||||
echo -n "Are the versions up to date? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo -n " Update versions? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please update the versions to proceed.\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Updating versions...";
|
||||
perl -i dev/release/update_revison.pl include/xlsxwriter.h libxlsxwriter.podspec
|
||||
check_versions
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Check that the docs build cleanly.
|
||||
#
|
||||
function check_docs {
|
||||
|
||||
# clear
|
||||
echo
|
||||
echo -n "Do the docs build cleanly? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Build docs now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: make docs\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Building docs...";
|
||||
make docs
|
||||
check_docs
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Generate the cocoapods umbrella file.
|
||||
#
|
||||
function gen_umbrella_file {
|
||||
|
||||
echo
|
||||
echo -n "Is the umbrella file up to date? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Update umbrella file now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please update cocoapods/libxlsxwriter-umbrella.h\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Updating file...";
|
||||
perl dev/release/gen_umbrella_file.pl > cocoapods/libxlsxwriter-umbrella.h
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Check the cocoapods spec file.
|
||||
#
|
||||
function check_pod_spec {
|
||||
|
||||
echo
|
||||
echo -n "Is the coacoapod file ok? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Run lint now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: pod spec lint libxlsxwriter.podspec\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Running lint...";
|
||||
pod spec lint libxlsxwriter.podspec --use-libraries
|
||||
check_pod_spec
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Update the pod repo. This can take some time.
|
||||
#
|
||||
function update_pod_repo {
|
||||
|
||||
echo
|
||||
echo -n "Is the pod repo updated? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
|
||||
echo -n " Update now? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please run: pod spec lint libxlsxwriter.podspec\n";
|
||||
exit 1
|
||||
else
|
||||
echo " Running update...";
|
||||
cd ~/.cocoapods/repos/master
|
||||
git pull --ff-only
|
||||
cd -
|
||||
update_pod_repo
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# Run release checks.
|
||||
#
|
||||
function check_git_status {
|
||||
|
||||
clear
|
||||
|
||||
echo "Git status: "
|
||||
git status | awk '{print " | ", $0}'
|
||||
|
||||
echo "Git log: "
|
||||
git log -1 | awk '{print " | ", $0}'
|
||||
|
||||
echo "Git latest tag: "
|
||||
git tag -l -n1 | tail -1 | awk '{print " | ", $0}'
|
||||
|
||||
echo
|
||||
echo -n "Is the git status okay? [y/N]: "
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" != "y" ]; then
|
||||
echo
|
||||
echo -e "Please fix git status.\n";
|
||||
|
||||
echo -e "\ngit add -u";
|
||||
git tag -l -n1 | tail -1 | perl -lane 'printf "git commit -m \"Prep for release %s\"\ngit tag \"%s\"\n\n", $F[4], $F[0]' | perl dev/release/update_revison.pl
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
check_test_status
|
||||
clear
|
||||
check_test_const
|
||||
clear
|
||||
check_spellcheck
|
||||
clear
|
||||
check_docs
|
||||
check_changefile
|
||||
clear
|
||||
gen_umbrella_file
|
||||
check_pod_spec
|
||||
clear
|
||||
update_pod_repo
|
||||
check_versions
|
||||
check_git_status
|
||||
|
||||
|
||||
#############################################################
|
||||
#
|
||||
# All checks complete.
|
||||
#
|
||||
clear
|
||||
echo
|
||||
echo "Everything is configured.";
|
||||
echo
|
||||
|
||||
echo -n "Confirm release: [y/N]: ";
|
||||
read RESPONSE
|
||||
|
||||
if [ "$RESPONSE" == "y" ]; then
|
||||
exit 0
|
||||
else
|
||||
exit 1
|
||||
fi
|
42
library/libxlsxwriter/dev/release/update_revison.pl
Normal file
@ -0,0 +1,42 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Simple script to increment x.y.z style version numbers in a file.
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Perl::Version;
|
||||
|
||||
while (<>) {
|
||||
|
||||
# Increment any x.y.z version strings.
|
||||
if (m/(\d\.\d\.\d)/) {
|
||||
my $version = Perl::Version->new( $1 );
|
||||
|
||||
# Components are: revision, version and subversion.
|
||||
if ( $version->version == 9 && $version->subversion == 9 ) {
|
||||
$version->inc_revision();
|
||||
}
|
||||
elsif ( $version->subversion == 9 ) {
|
||||
$version->inc_version();
|
||||
}
|
||||
else {
|
||||
$version->inc_subversion();
|
||||
}
|
||||
|
||||
my $new_version = $version->stringify();
|
||||
s/\d\.\d\.\d/$new_version/;
|
||||
}
|
||||
|
||||
# Increment the LXW_VERSION_ID number in xlsxwriter.h
|
||||
if (m/LXW_VERSION_ID (\d+)/) {
|
||||
my $version = $1;
|
||||
my $new_version = $version + 1;
|
||||
|
||||
s/\d+/$new_version/;
|
||||
}
|
||||
|
||||
print;
|
||||
}
|
||||
|
||||
|
||||
__END__
|
2553
library/libxlsxwriter/docs/Doxyfile
Normal file
180
library/libxlsxwriter/docs/DoxygenLayout.xml
Normal file
@ -0,0 +1,180 @@
|
||||
<doxygenlayout version="1.0">
|
||||
<!-- Generated by doxygen 1.8.7 -->
|
||||
<!-- Navigation index tabs for HTML output -->
|
||||
<navindex>
|
||||
<tab type="mainpage" visible="yes" title=""/>
|
||||
<tab type="modules" visible="yes" title="" intro=""/>
|
||||
<tab type="pages" visible="yes" title="" intro=""/>
|
||||
<tab type="files" visible="yes" title="">
|
||||
<tab type="filelist" visible="yes" title="" intro=""/>
|
||||
</tab>
|
||||
<tab type="examples" visible="yes" title="" intro="Example programs using libxlsxwriter:"/>
|
||||
</navindex>
|
||||
|
||||
<!-- Layout definition for a class page -->
|
||||
<class>
|
||||
<briefdescription visible="yes"/>
|
||||
<detaileddescription title=""/>
|
||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||
<memberdecl>
|
||||
<nestedclasses visible="yes" title=""/>
|
||||
<publictypes title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<publicslots title=""/>
|
||||
<signals title=""/>
|
||||
<publicmethods title=""/>
|
||||
<publicstaticmethods title=""/>
|
||||
<publicattributes title=""/>
|
||||
<publicstaticattributes title=""/>
|
||||
<protectedtypes title=""/>
|
||||
<protectedslots title=""/>
|
||||
<protectedmethods title=""/>
|
||||
<protectedstaticmethods title=""/>
|
||||
<protectedattributes title=""/>
|
||||
<protectedstaticattributes title=""/>
|
||||
<packagetypes title=""/>
|
||||
<packagemethods title=""/>
|
||||
<packagestaticmethods title=""/>
|
||||
<packageattributes title=""/>
|
||||
<packagestaticattributes title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
<privatetypes title=""/>
|
||||
<privateslots title=""/>
|
||||
<privatemethods title=""/>
|
||||
<privatestaticmethods title=""/>
|
||||
<privateattributes title=""/>
|
||||
<privatestaticattributes title=""/>
|
||||
<friends title=""/>
|
||||
<related title="" subtitle=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<services title=""/>
|
||||
<interfaces title=""/>
|
||||
<constructors title=""/>
|
||||
<functions title=""/>
|
||||
<related title=""/>
|
||||
<variables title=""/>
|
||||
<properties title=""/>
|
||||
<events title=""/>
|
||||
</memberdef>
|
||||
<allmemberslink visible="yes"/>
|
||||
<usedfiles visible="$SHOW_USED_FILES"/>
|
||||
<authorsection visible="yes"/>
|
||||
</class>
|
||||
|
||||
<!-- Layout definition for a namespace page -->
|
||||
<namespace>
|
||||
<briefdescription visible="yes"/>
|
||||
<memberdecl>
|
||||
<nestednamespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</namespace>
|
||||
|
||||
<!-- Layout definition for a file page -->
|
||||
<file>
|
||||
<detaileddescription title="Description"/>
|
||||
<sourcelink visible="yes"/>
|
||||
<memberdecl>
|
||||
<functions title=""/>
|
||||
</memberdecl>
|
||||
<memberdef>
|
||||
<functions title=""/>
|
||||
<inlineclasses title=""/>
|
||||
<typedefs title=""/>
|
||||
<defines title=""/>
|
||||
<enums title=""/>
|
||||
<variables title=""/>
|
||||
</memberdef>
|
||||
<memberdecl>
|
||||
<classes visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<constantgroups visible="yes" title=""/>
|
||||
<typedefs title=""/>
|
||||
<variables title=""/>
|
||||
<enums title=""/>
|
||||
<defines title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<authorsection/>
|
||||
</file>
|
||||
|
||||
<!-- Layout definition for a group page -->
|
||||
<group>
|
||||
<briefdescription visible="yes"/>
|
||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||
<memberdecl>
|
||||
<nestedgroups visible="yes" title=""/>
|
||||
<dirs visible="yes" title=""/>
|
||||
<files visible="yes" title=""/>
|
||||
<namespaces visible="yes" title=""/>
|
||||
<classes visible="yes" title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
<membergroups visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
<memberdef>
|
||||
<pagedocs/>
|
||||
<inlineclasses title=""/>
|
||||
<defines title=""/>
|
||||
<typedefs title=""/>
|
||||
<enums title=""/>
|
||||
<enumvalues title=""/>
|
||||
<functions title=""/>
|
||||
<variables title=""/>
|
||||
<signals title=""/>
|
||||
<publicslots title=""/>
|
||||
<protectedslots title=""/>
|
||||
<privateslots title=""/>
|
||||
<events title=""/>
|
||||
<properties title=""/>
|
||||
<friends title=""/>
|
||||
</memberdef>
|
||||
<authorsection visible="yes"/>
|
||||
</group>
|
||||
|
||||
<!-- Layout definition for a directory page -->
|
||||
<directory>
|
||||
<briefdescription visible="yes"/>
|
||||
<directorygraph visible="yes"/>
|
||||
<memberdecl>
|
||||
<dirs visible="yes"/>
|
||||
<files visible="yes"/>
|
||||
</memberdecl>
|
||||
<detaileddescription title=""/>
|
||||
</directory>
|
||||
</doxygenlayout>
|
1502
library/libxlsxwriter/docs/customdoxygen.css
Normal file
18
library/libxlsxwriter/docs/footer.html
Normal file
@ -0,0 +1,18 @@
|
||||
<!-- HTML footer for doxygen 1.8.20-->
|
||||
<!-- start footer part -->
|
||||
<!--BEGIN GENERATE_TREEVIEW-->
|
||||
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
|
||||
<ul>
|
||||
$navpath
|
||||
<li class="footer">Copyright 2014-2021 John McNamara. $generatedby <a href="http://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion </li>
|
||||
</ul>
|
||||
</div>
|
||||
<!--END GENERATE_TREEVIEW-->
|
||||
<!--BEGIN !GENERATE_TREEVIEW-->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
Copyright 2014-2021 John McNamara.
|
||||
$generatedby <a href="http://www.doxygen.org/index.html"><img class="footer" src="$relpath^doxygen.svg" width="104" height="31" alt="doxygen"/></a> $doxygenversion
|
||||
</small></address>
|
||||
<!--END !GENERATE_TREEVIEW-->
|
||||
</body>
|
||||
</html>
|
BIN
library/libxlsxwriter/docs/images/anatomy.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
library/libxlsxwriter/docs/images/array_formula.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
library/libxlsxwriter/docs/images/autofilter1.png
Normal file
After Width: | Height: | Size: 97 KiB |
BIN
library/libxlsxwriter/docs/images/autofilter2.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
library/libxlsxwriter/docs/images/autofilter3.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
library/libxlsxwriter/docs/images/autofilter4.png
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
library/libxlsxwriter/docs/images/autofilter5.png
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
library/libxlsxwriter/docs/images/background.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
library/libxlsxwriter/docs/images/chart_area1.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
library/libxlsxwriter/docs/images/chart_area2.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
library/libxlsxwriter/docs/images/chart_area3.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axes01.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axes02.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axes03.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axes04.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axes05.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_label_alignment1.png
Executable file
After Width: | Height: | Size: 7.9 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_num_format.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_off.png
Normal file
After Width: | Height: | Size: 51 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_fill.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_line.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_name.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_name_font.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_num_font.png
Normal file
After Width: | Height: | Size: 52 KiB |
BIN
library/libxlsxwriter/docs/images/chart_axis_set_position.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
library/libxlsxwriter/docs/images/chart_bar1.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_bar2.png
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
library/libxlsxwriter/docs/images/chart_bar3.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
library/libxlsxwriter/docs/images/chart_chartarea.png
Normal file
After Width: | Height: | Size: 48 KiB |
BIN
library/libxlsxwriter/docs/images/chart_clustered.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
library/libxlsxwriter/docs/images/chart_column1.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_column2.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_column3.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_crossing1.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
library/libxlsxwriter/docs/images/chart_crossing2.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels1.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels11.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels12.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels13.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels14.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels15.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels16.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels17.png
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels18.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels19.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels2.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels20.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels21.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels22.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels23.png
Normal file
After Width: | Height: | Size: 62 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels24.png
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels25.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels3.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels4.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels5.png
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels6.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels7.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels8.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_labels9.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_table1.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_table2.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_table3.png
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools3.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools4.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools5.png
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools6.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools7.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools8.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
library/libxlsxwriter/docs/images/chart_data_tools9.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
library/libxlsxwriter/docs/images/chart_display_units.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
library/libxlsxwriter/docs/images/chart_doughnut1.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
library/libxlsxwriter/docs/images/chart_doughnut2.png
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
library/libxlsxwriter/docs/images/chart_error_bars0.png
Normal file
After Width: | Height: | Size: 60 KiB |
BIN
library/libxlsxwriter/docs/images/chart_error_bars1.png
Normal file
After Width: | Height: | Size: 63 KiB |