Add xlsxwriter-based Excel generation scripts with openpyxl implementation

- Created create_excel_xlsxwriter.py and update_excel_xlsxwriter.py
- Uses openpyxl exclusively to preserve Excel formatting and formulas
- Updated server.js to use new xlsxwriter scripts for form submissions
- Maintains all original functionality while ensuring proper Excel file handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
andrei
2025-09-22 13:53:06 +00:00
commit 0e2e1bddba
842 changed files with 316330 additions and 0 deletions

View File

@@ -0,0 +1,25 @@
BSD 2-Clause License
Copyright (c) 2013-2025, 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 HOLDER 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.

View File

@@ -0,0 +1,95 @@
Metadata-Version: 2.2
Name: xlsxwriter
Version: 3.2.9
Summary: A Python module for creating Excel XLSX files.
Home-page: https://github.com/jmcnamara/XlsxWriter
Author: John McNamara
Author-email: jmcnamara@cpan.org
License: BSD-2-Clause
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.8
License-File: LICENSE.txt
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: requires-python
Dynamic: summary
XlsxWriter
==========
**XlsxWriter** is a Python module for writing files in the Excel 2007+ XLSX
file format.
XlsxWriter can be used to write text, numbers, formulas and hyperlinks to
multiple worksheets and it supports features such as formatting and many more,
including:
* 100% compatible Excel XLSX files.
* Full formatting.
* Merged cells.
* Defined names.
* Charts.
* Autofilters.
* Data validation and drop down lists.
* Conditional formatting.
* Worksheet PNG/JPEG/GIF/BMP/WMF/EMF images.
* Rich multi-format strings.
* Cell comments.
* Integration with Pandas and Polars.
* Textboxes.
* Support for adding Macros.
* Memory optimization mode for writing large files.
It supports Python 3.8+ and PyPy3 and uses standard libraries only.
Here is a simple example:
.. code-block:: python
import xlsxwriter
# Create an new Excel file and add a worksheet.
workbook = xlsxwriter.Workbook("demo.xlsx")
worksheet = workbook.add_worksheet()
# Widen the first column to make the text clearer.
worksheet.set_column("A:A", 20)
# Add a bold format to use to highlight cells.
bold = workbook.add_format({"bold": True})
# Write some simple text.
worksheet.write("A1", "Hello")
# Text with formatting.
worksheet.write("A2", "World", bold)
# Write some numbers, with row/column notation.
worksheet.write(2, 0, 123)
worksheet.write(3, 0, 123.456)
# Insert an image.
worksheet.insert_image("B5", "logo.png")
workbook.close()
.. image:: https://raw.github.com/jmcnamara/XlsxWriter/master/dev/docs/source/_images/demo.png
See the full documentation at: https://xlsxwriter.readthedocs.io
Release notes: https://xlsxwriter.readthedocs.io/changes.html

View File

@@ -0,0 +1,93 @@
../../../bin/__pycache__/vba_extract.cpython-312.pyc,,
../../../bin/vba_extract.py,sha256=WmYYkk4yWQl2YO13qupkEcZqokofgVdidN5wVRr457E,2350
xlsxwriter-3.2.9.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
xlsxwriter-3.2.9.dist-info/LICENSE.txt,sha256=zwi2Ck3tmGtYphfLgwQ3O9pcTv9C-04w11l7YW4Rboc,1349
xlsxwriter-3.2.9.dist-info/METADATA,sha256=ENUE8Yjgh_B6BrkDjtBTXzesBywjLmDAdd2wrtt7fXg,2712
xlsxwriter-3.2.9.dist-info/RECORD,,
xlsxwriter-3.2.9.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
xlsxwriter-3.2.9.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
xlsxwriter-3.2.9.dist-info/top_level.txt,sha256=xFEUcpcY7QzAr_-ztkXebEt1FZCxpuCbmyCsBaevhRk,11
xlsxwriter/__init__.py,sha256=-BsFh-b8WpeXJKMc0oh1PnItTqKdC_IxC19Q_pO_E9M,218
xlsxwriter/__pycache__/__init__.cpython-312.pyc,,
xlsxwriter/__pycache__/app.cpython-312.pyc,,
xlsxwriter/__pycache__/chart.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_area.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_bar.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_column.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_doughnut.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_line.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_pie.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_radar.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_scatter.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_stock.cpython-312.pyc,,
xlsxwriter/__pycache__/chart_title.cpython-312.pyc,,
xlsxwriter/__pycache__/chartsheet.cpython-312.pyc,,
xlsxwriter/__pycache__/color.cpython-312.pyc,,
xlsxwriter/__pycache__/comments.cpython-312.pyc,,
xlsxwriter/__pycache__/contenttypes.cpython-312.pyc,,
xlsxwriter/__pycache__/core.cpython-312.pyc,,
xlsxwriter/__pycache__/custom.cpython-312.pyc,,
xlsxwriter/__pycache__/drawing.cpython-312.pyc,,
xlsxwriter/__pycache__/exceptions.cpython-312.pyc,,
xlsxwriter/__pycache__/feature_property_bag.cpython-312.pyc,,
xlsxwriter/__pycache__/format.cpython-312.pyc,,
xlsxwriter/__pycache__/image.cpython-312.pyc,,
xlsxwriter/__pycache__/metadata.cpython-312.pyc,,
xlsxwriter/__pycache__/packager.cpython-312.pyc,,
xlsxwriter/__pycache__/relationships.cpython-312.pyc,,
xlsxwriter/__pycache__/rich_value.cpython-312.pyc,,
xlsxwriter/__pycache__/rich_value_rel.cpython-312.pyc,,
xlsxwriter/__pycache__/rich_value_structure.cpython-312.pyc,,
xlsxwriter/__pycache__/rich_value_types.cpython-312.pyc,,
xlsxwriter/__pycache__/shape.cpython-312.pyc,,
xlsxwriter/__pycache__/sharedstrings.cpython-312.pyc,,
xlsxwriter/__pycache__/styles.cpython-312.pyc,,
xlsxwriter/__pycache__/table.cpython-312.pyc,,
xlsxwriter/__pycache__/theme.cpython-312.pyc,,
xlsxwriter/__pycache__/url.cpython-312.pyc,,
xlsxwriter/__pycache__/utility.cpython-312.pyc,,
xlsxwriter/__pycache__/vml.cpython-312.pyc,,
xlsxwriter/__pycache__/workbook.cpython-312.pyc,,
xlsxwriter/__pycache__/worksheet.cpython-312.pyc,,
xlsxwriter/__pycache__/xmlwriter.cpython-312.pyc,,
xlsxwriter/app.py,sha256=Fxj246un5ReckijvorMLOy59ms5zpAxTY6PUy6VpfAE,6094
xlsxwriter/chart.py,sha256=4fQ8cK551xlviiVc_j41dCPND8TXg_IxSObMeGpKEDQ,132029
xlsxwriter/chart_area.py,sha256=9tABJV6OagVxiuLzhPHX2X8XQQBpO-5Q5zNdluSTiMI,2758
xlsxwriter/chart_bar.py,sha256=qqSD3m04mS2mkjoBDjlULayIUCgzAOopbOKvDMATqF8,5007
xlsxwriter/chart_column.py,sha256=SSvafNFCfCYhgykMlO3deaupge_NixZoegi2RCZOOPk,3671
xlsxwriter/chart_doughnut.py,sha256=n7a8VhyIe9TJft79-F7y9myNl616y7uOSLxXzd9cvXI,2698
xlsxwriter/chart_line.py,sha256=f4F_xapRt2_XMK-H8uGjuXtuNDuj_NMBfU3k2CdTx_0,3851
xlsxwriter/chart_pie.py,sha256=WDt9-lVbvfuVwVSRHsLkk3tCipSme_SWVXv_eSQ1ups,7524
xlsxwriter/chart_radar.py,sha256=qL3_vbBPdDy4Y2k5Vqt-jZgw91b3BJVOt-VhLWANhpE,2824
xlsxwriter/chart_scatter.py,sha256=wbVqXRvo5pizXOX91Wm0WqRHY5UBM5JRNFUvEbe6EBI,9699
xlsxwriter/chart_stock.py,sha256=R5E3VzuFSD-9UnZwDhZd054nhezyzx5mrP25Cps1fwQ,3531
xlsxwriter/chart_title.py,sha256=NDNIxJAvWzQIm3ywE_ojhF9RlgJ1aPr8gFQ38-ii0mM,3344
xlsxwriter/chartsheet.py,sha256=0CrbjkdNmsaYp4TsGlCWcHpl6b3KG3Ap5walCBR095o,5631
xlsxwriter/color.py,sha256=J9LAU5hbPRTuL07iGRxgWJ4zPvCS4adCp0r01-DhDcQ,13486
xlsxwriter/comments.py,sha256=xAi-43Jbc3OFe-r0CNrECk_3NlVlpC-yC6eMXw_eJSA,11679
xlsxwriter/contenttypes.py,sha256=Jr3DgWNcsm_2VPyvAFal9AQEvn_iy-4IXyCBXA7LVAA,8971
xlsxwriter/core.py,sha256=fiKqawPnwb6L5xl92e2aVkcJ2i0EtXj2TzKK3a7d_hI,5425
xlsxwriter/custom.py,sha256=oKbSqC-ZNYawwmDXOMX_g8oN4n_JI8oMjQqZBg6x9IY,3921
xlsxwriter/drawing.py,sha256=KZ1-IL4wZ9BN4AD47Eipo2pZ3EvxOgtw4aY8_v2qhik,34349
xlsxwriter/exceptions.py,sha256=RHp8Q5ey36A43lpjsaeyGGNf9dZVDKAekGUamHHuack,1400
xlsxwriter/feature_property_bag.py,sha256=oMowSC_r3oNXF9Uyv1P8Se0TwKs3YSO69L5HEzCCm7g,4274
xlsxwriter/format.py,sha256=zyHTeNqGvnRKwLd6lQFwqX6cfwNI42dexEcG02iqu4g,32417
xlsxwriter/image.py,sha256=wBDX8moVuqcf7bTjSWdmhKqFIck3bPQTJeLDfVZmwDI,13610
xlsxwriter/metadata.py,sha256=2z4Qu9w_nVvg302S2k3H6HVom1nwJZTrK2BVNf7--vg,7654
xlsxwriter/packager.py,sha256=7_s34dYK0F28k01Kw2MTJwS4u6r9lQdx3AZxxKjPv14,30287
xlsxwriter/relationships.py,sha256=Q2ta8OaCNwD5lc6mw8OFMCbpK2gzw4PgR59Lum3o1bk,4578
xlsxwriter/rich_value.py,sha256=8KHLb38HXhzbVU_uASlSkjBq3I-Lj7NevlTiruxLTKw,2483
xlsxwriter/rich_value_rel.py,sha256=W1kyvd9242ngQs-B4spEZbF4scyFlmRkbHEkDAowQ-M,2226
xlsxwriter/rich_value_structure.py,sha256=4AkH-JA6p3ovyxx2nvM2fBzb6NXtokkfvU2OghcBJqs,2544
xlsxwriter/rich_value_types.py,sha256=KLXVsms85gDZ22DO8xKqQbFHK10E9JVFVORhzC3itYM,3347
xlsxwriter/shape.py,sha256=8MlB_asEs5Venr5yGkExZodoXYH6GMLff8A0VT4q5VA,13639
xlsxwriter/sharedstrings.py,sha256=erbq66s5IsyBhZ7LpfnExMgWvm9fcmnkn1HtIt7bR5k,3960
xlsxwriter/styles.py,sha256=bZRaRUUt4JrTLoUvNY2YNj2I968Gczd0OWHojIfIi3M,24409
xlsxwriter/table.py,sha256=1x0wOs1ek8zzjcolqMJ84vkoXOt2Q2UprvcdzKI6vpk,5918
xlsxwriter/theme.py,sha256=0xYDmCV60qO4jzIxaPcu9bbpXj-ZDD2j0tTdG-WuL6s,8953
xlsxwriter/url.py,sha256=ju8CNEIhDsjHyT53fHAoXz0-WzVWWeHjIGvX7UvYqLs,8535
xlsxwriter/utility.py,sha256=J72bN4ZbUw1AmWXeow9ppJbacbuaqE7ckCKIyTIdox4,30070
xlsxwriter/vml.py,sha256=KG82aI8lINqcrg6fV1UtPKgsGcJ5w1HedQpsKpHy8z8,22208
xlsxwriter/workbook.py,sha256=S0o4ILSHfvMZIM4TYw1mqr9K7V6fnHp6fidpQna34vk,59539
xlsxwriter/worksheet.py,sha256=24lVZUfIBZRZa8niZK-bmsRFNxN0jPx9CbBS36Baoa0,285350
xlsxwriter/xmlwriter.py,sha256=ru0nbTDEbMspuK1Td01UZ_d8GEb0WQp6U98noHxmuQ4,7821

View File

@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (75.8.0)
Root-Is-Purelib: true
Tag: py3-none-any

View File

@@ -0,0 +1 @@
xlsxwriter