pax_global_header 0000666 0000000 0000000 00000000064 15137152307 0014516 g ustar 00root root 0000000 0000000 52 comment=6956f882faa54ba9ddbfa9bcfb283bbf8441db8a
dilshod-xlsx2csv-a926140/ 0000775 0000000 0000000 00000000000 15137152307 0015206 5 ustar 00root root 0000000 0000000 dilshod-xlsx2csv-a926140/.github/ 0000775 0000000 0000000 00000000000 15137152307 0016546 5 ustar 00root root 0000000 0000000 dilshod-xlsx2csv-a926140/.github/workflows/ 0000775 0000000 0000000 00000000000 15137152307 0020603 5 ustar 00root root 0000000 0000000 dilshod-xlsx2csv-a926140/.github/workflows/publish-to-test-pypi.yml 0000664 0000000 0000000 00000006256 15137152307 0025361 0 ustar 00root root 0000000 0000000 name: Publish Python � distribution 📦 to PyPI and TestPyPI
on: push
jobs:
build:
name: Build distribution 📦
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Install pypa/build
run: >-
python3 -m
pip install
build
--user
- name: Build a binary wheel and a source tarball
run: python3 -m build
- name: Store the distribution packages
uses: actions/upload-artifact@v3
with:
name: python-package-distributions
path: dist/
publish-to-pypi:
name: >-
Publish Python � distribution 📦 to PyPI
if: startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
needs:
- build
runs-on: ubuntu-latest
environment:
name: pypi
url: https://pypi.org/p/xlsx2csv
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
github-release:
name: >-
Sign the Python � distribution 📦 with Sigstore
and upload them to GitHub Release
needs:
- publish-to-pypi
runs-on: ubuntu-latest
permissions:
contents: write # IMPORTANT: mandatory for making GitHub Releases
id-token: write # IMPORTANT: mandatory for sigstore
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Sign the dists with Sigstore
uses: sigstore/gh-action-sigstore-python@v1.2.3
with:
inputs: >-
./dist/*.tar.gz
./dist/*.whl
- name: Create GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
run: >-
gh release create
'${{ github.ref_name }}'
--repo '${{ github.repository }}'
--notes ""
- name: Upload artifact signatures to GitHub Release
env:
GITHUB_TOKEN: ${{ github.token }}
# Upload to GitHub Release using the `gh` CLI.
# `dist/` contains the built packages, and the
# sigstore-produced signatures and certificates.
run: >-
gh release upload
'${{ github.ref_name }}' dist/**
--repo '${{ github.repository }}'
publish-to-testpypi:
name: Publish Python � distribution 📦 to TestPyPI
needs:
- build
runs-on: ubuntu-latest
environment:
name: testpypi
url: https://test.pypi.org/p/xlsx2csv
permissions:
id-token: write # IMPORTANT: mandatory for trusted publishing
steps:
- name: Download all the dists
uses: actions/download-artifact@v3
with:
name: python-package-distributions
path: dist/
- name: Publish distribution 📦 to TestPyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
skip-existing: true
dilshod-xlsx2csv-a926140/.gitignore 0000664 0000000 0000000 00000000601 15137152307 0017173 0 ustar 00root root 0000000 0000000 .DS_Store
*.py[cod]
# C extensions
*.so
# Packages
*.egg
*.egg-info
MANIFEST
scripts
dist
build
eggs
parts
bin
var
sdist
develop-eggs
.installed.cfg
lib
lib64
__pycache__
# Installer logs
pip-log.txt
# Unit test / coverage reports
.coverage
.tox
nosetests.xml
# Translations
*.mo
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
*.swp
# Test
*.csv-test
# PyCharm
.idea
dilshod-xlsx2csv-a926140/CHANGELOG 0000664 0000000 0000000 00000007402 15137152307 0016423 0 ustar 00root root 0000000 0000000 version 0.8.6 (2026-Jan-30):
* Fix float formatting regression where numbers like 1.5 displayed as 1.500000 when using floatformat option
version 0.8.5 (2026-Jan-30):
* Add percentage rendering support for Excel percentage formatted cells
* Add safe handling of Excel error values with ignore_invalid_char_data option
* Add type hints to xlsx2csv API for better IDE support and type checking
* Add Python 3.13 support and compatibility
* Fix deprecation warning for Python 3.13 regex substitution
* Fix handling of cells with windows-style newline \r\n characters
* Float formatting improvements and set float as default cell type
* Update copyright year to current year
* Add missing imports for better module organization
version 0.8.4 (2025-Oct-1):
* Add --continue-on-error option for batch processing to continue when individual files fail
* Fix ResourceWarning by adding context manager support and proper file handle cleanup
* Fix invalid name value - Excel uses #NAME? not #NAME! (#298)
version 0.8.3 (2024-Jul-29):
* Fix bug when missing workbook relationship
* Update pyproject.toml with python support
* Add Python 3.12 support
* Fix potential SyntaxError when >= Python 3.12 (regex)
version 0.8.2 (2023-Dec-13):
* add "-" notation for reading from stdin
* refactor float formatting in data processing
* Added file separator ASCII(28) as optional delimiter
* added formatted inline strings support
* #228 issue fix
version 0.8.1 (2023-Jan-9):
* include hidden rows options
version 0.8.0 (2022-Jun-7):
* MIT License
version 0.7.9 (2021-Aug-29)
* add support for sheetname argument to convert function
version 0.7.8 (2021-Apr-19):
* bug fixes
version 0.7.7 (2020-Jun-23):
version 0.7.6 (2019-Mar-21):
* reverting id field for sheet indexing
version 0.7.5 (2019-Mar-7):
* Passing "sheets_order" test case. Added support for workbook relations.
* add floadformat to README
* Updated the date formats to current ms excel
* read and use [Content_Types].xml
* Fix for missing cell ids ("r" attribute in )
* Refactoring, etc.
version 0.7.4 (2018-Jun-5):
version 0.7.3 (2017-May-20):
* Support for "xl/worksheets/worksheet.xml"
* Date format "float" leaves value as simple numeric.
* bug fixes by Eudes du Rivau
version 0.7.2 (2015-Apr-17):
* bug fixes
version 0.7.1 (2015-Feb-10):
* more date formats
* other fixes
version 0.7 (2014-Jan-28):
* hyperlinks support
version 0.6 (2013-Dec-7):
* python 2.4 support
* python 3.3 support
* setuptools
* escape \t\r\n characters option
* bug fixes
version
* seperate csv files for each sheet (#37)
* #38 issue fix
version 0.5 (2013-Jun-6):
* Select EOL terminator according to OS (#32)
* floating errors (#28)
* inlineStr support (#24)
* Add man/ directory for manual page (#23)
* Misinterpretation of & (#15)
and other fixes
version 0.20 (2012-Aug-7)
version 0.19 (2012-May-17):
* issue #12 fix, some kind of unknown excel app version
version 0.18 (2012-Feb-19):
* Support for multi-region shared-strings (merge #11)
version 0.17 (2012-Feb-14):
* issue #10 fix
version 0.16 (2011-Oct-26):
* new date format
version 0.15 (2011-Sep-16):
* datetime 1904 format support
* datetime format bug fix
version 0.14 (2011-jul-15):
* recursively convert the xlsx files in a directory to csv (Zhehao Mao's patch)
version 0.131 (2011-apr-19):
* skip empty lines option
version 0.13 (2011-jan-16):
* sheet no bug fix
version 0.12 (2010-dec-21):
* fix last column empty bug
version 0.11 (2010-sep-13):
* no numFmt bugfix
version 0.1 (2010-sep-12):
* better support for date/time formats
* two letter columns bug fixed
* sheets support added
* unicode fix
* boolean type
- thanks to Neil Killeen
version 0.0 (2010-jun-11):
* xlsx to csv converter first release
dilshod-xlsx2csv-a926140/CLAUDE.md 0000664 0000000 0000000 00000005260 15137152307 0016470 0 ustar 00root root 0000000 0000000 # CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
xlsx2csv is a Python utility that converts XLSX files to CSV format. It's designed to handle large XLSX files efficiently and supports multiple Python versions (2.4 to 3.14). The entire converter is implemented in a single Python file `xlsx2csv.py` (~54KB).
## Development Commands
### Testing
```bash
python3 test/run
```
This runs the comprehensive test suite that compares output from various test XLSX files against expected CSV files. Tests cover edge cases like datetime formatting, empty rows, hyperlinks, various delimiters, and multi-sheet files.
### Building
```bash
python3 -m build
```
Uses the modern Python build system defined in `pyproject.toml`.
### Installation for Development
```bash
pip install -e .
```
Install in editable mode for local development.
## Code Architecture
### Core Classes
- **Xlsx2csv**: Main converter class that orchestrates the conversion process
- **Workbook**: Represents the XLSX workbook structure and handles ZIP file extraction
- **Sheet**: Handles individual worksheet conversion with SAX parsing for memory efficiency
- **SharedStrings**: Manages the shared strings table
- **Styles**: Handles cell formatting and number formats
- **ContentTypes**: Manages XLSX content type definitions
- **Relationships**: Handles XLSX relationship mappings
### Key Design Patterns
- **SAX Parsing**: Uses `xml.parsers.expat` for memory-efficient XML parsing of large files
- **Streaming Processing**: Processes XLSX files without loading entire content into memory
- **Format Detection**: Comprehensive format mapping system (`FORMATS` and `STANDARD_FORMATS` dicts) for proper type conversion
- **Command-line Interface**: Uses argparse for Python 3+ and optparse fallback for Python 2.4
### File Structure
- `xlsx2csv.py`: Single-file implementation containing all classes and logic
- `test/`: Contains test XLSX/CSV file pairs and the test runner
- `test/run`: Python script that compares converter output against expected results
## Testing Strategy
The test suite uses a comparison-based approach:
1. Converts test XLSX files using the converter
2. Compares output with pre-generated expected CSV files
3. Tests both file input and STDIN input modes
4. Covers various edge cases: datetime formatting, hyperlinks, empty cells, multi-sheet files, different encodings
## Key Features Supported
- Multiple output formats and delimiters
- Date/time formatting with custom patterns
- Hyperlink extraction
- Multi-sheet processing
- Large file handling via streaming
- Cross-platform compatibility (Windows/Linux/macOS)
- Python 2.4 to 3.14 compatibility
dilshod-xlsx2csv-a926140/LICENSE.txt 0000664 0000000 0000000 00000002051 15137152307 0017027 0 ustar 00root root 0000000 0000000 Copyright (c) 2025 Dilshod Temirkhodjaev
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.
dilshod-xlsx2csv-a926140/MANIFEST.in 0000664 0000000 0000000 00000000100 15137152307 0016733 0 ustar 00root root 0000000 0000000 include test/*
include man/*
include README
include LICENSE.txt
dilshod-xlsx2csv-a926140/README.md 0000664 0000000 0000000 00000010511 15137152307 0016463 0 ustar 00root root 0000000 0000000
# xlsx2csv
> xlsx to csv converter (http://github.com/dilshod/xlsx2csv)
Converts xlsx files to csv format.
Handles large XLSX files. Fast and easy to use.
## Tested (supported) Python versions:
- 2.4
- 2.7
- 3.4 to 3.14
## Installation:
```sh
sudo easy_install xlsx2csv
```
or
```sh
pip install xlsx2csv
```
Also works standalone with only the *xlsx2csv.py* script.
**Usage:**
```
xlsx2csv.py [-h] [-v] [-a] [-c OUTPUTENCODING] [-s SHEETID]
[-n SHEETNAME] [-d DELIMITER] [-l LINETERMINATOR]
[-f DATEFORMAT] [--floatformat FLOATFORMAT]
[-i] [-e] [-p SHEETDELIMITER]
[--hyperlinks]
[-I INCLUDE_SHEET_PATTERN [INCLUDE_SHEET_PATTERN ...]]
[-E EXCLUDE_SHEET_PATTERN [EXCLUDE_SHEET_PATTERN ...]] [-m]
xlsxfile [outfile]
```
**positional arguments:**
```
xlsxfile xlsx file path, use '-' to read from STDIN
outfile output csv file path, or directory if -s 0 is specified
```
**optional arguments:**
```
-h, --help show this help message and exit
-v, --version show program's version number and exit
-a, --all export all sheets
-c OUTPUTENCODING, --outputencoding OUTPUTENCODING
encoding of output CSV **Python 3 only** (default: utf-8)
-s SHEETID, --sheet SHEETID
sheet number to convert, 0 for all
-n SHEETNAME, --sheetname SHEETNAME
sheet name to convert
-d DELIMITER, --delimiter DELIMITER
delimiter - column delimiter in CSV, 'tab' or 'x09'
for a tab (default: comma ',')
-l LINETERMINATOR, --lineterminator LINETERMINATOR
line terminator - line terminator in CSV, '\n' '\r\n'
or '\r' (default: os.linesep)
-f DATEFORMAT, --dateformat DATEFORMAT
override date/time format (ex. %Y/%m/%d)
--floatformat FLOATFORMAT
override float format (ex. %.15f)
-i, --ignoreempty skip empty lines
-e, --escape escape \r\n\t characters
-p SHEETDELIMITER, --sheetdelimiter SHEETDELIMITER
sheet delimiter used to separate sheets, pass '' if
you do not need a delimiter, or 'x07' or '\\f' for form
feed (default: '--------')
-q QUOTING, --quoting QUOTING
field quoting, 'none' 'minimal' 'nonnumeric' or 'all' (default: 'minimal')
--hyperlinks, --hyperlinks
include hyperlinks
-I INCLUDE_SHEET_PATTERN [INCLUDE_SHEET_PATTERN ...], --include_sheet_pattern INCLUDE_SHEET_PATTERN [INCLUDE_SHEET_PATTERN ...]
only include sheets with names matching the given pattern, only
affects when -a option is enabled.
-E EXCLUDE_SHEET_PATTERN [EXCLUDE_SHEET_PATTERN ...], --exclude_sheet_pattern EXCLUDE_SHEET_PATTERN [EXCLUDE_SHEET_PATTERN ...]
exclude sheets with names matching the given pattern, only
affects when -a option is enabled.
-m, --merge-cells merge cells
```
Usage with a folder containing multiple `xlsx` files:
```
python xlsx2csv.py /path/to/input/dir /path/to/output/dir
```
will output each file in the input directory converted to `.csv` in the output directory. If omitting the output directory, it will output the converted files in the input directory.
Usage from within Python:
```
from xlsx2csv import Xlsx2csv
# Recommended: using context manager for proper resource cleanup
with Xlsx2csv("myfile.xlsx", outputencoding="utf-8") as xlsx2csv:
xlsx2csv.convert("myfile.csv")
# Simple usage (but may cause ResourceWarning in modern Python)
Xlsx2csv("myfile.xlsx", outputencoding="utf-8").convert("myfile.csv")
```
Expat SAX parser is used for XML parsing.
See alternatives:
Perl:
https://metacpan.org/dist/Spreadsheet-Read/view/scripts/xlsx2csv
Bash:
http://kirk.webfinish.com/?p=91
Python:
http://github.com/staale/python-xlsx
http://github.com/leegao/pyXLSX
Ruby:
http://roo.rubyforge.org/
Java:
http://poi.apache.org/
## Meta
Dilshod Temirkhdojaev – tdilshod@gmail.com
Distributed under the MIT license. See ``LICENSE`` for more information.
[https://github.com/dilshod](https://github.com/dilshod)
dilshod-xlsx2csv-a926140/man/ 0000775 0000000 0000000 00000000000 15137152307 0015761 5 ustar 00root root 0000000 0000000 dilshod-xlsx2csv-a926140/man/Makefile 0000664 0000000 0000000 00000000204 15137152307 0017415 0 ustar 00root root 0000000 0000000 # Makefile
PACKAGE = xlsx2csv
all: man
clean:
rm -f *.1
man:
$(MAKE) -f pod2man.mk PACKAGE=$(PACKAGE) makeman
# End of file
dilshod-xlsx2csv-a926140/man/pod2man.mk 0000664 0000000 0000000 00000003356 15137152307 0017661 0 ustar 00root root 0000000 0000000 # pod2man.mk -- Makefile portion to convert *.pod files to manual pages
#
# Copyright information
#
# Copyright (C) 2008-2012 Jari Aalto
#
# License
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# Description
#
# Convert *.pod files to manual pages. Add this to Makefile:
#
# PACKAGE = package
#
# man:
# make -f pod2man.mk PACKAGE=$(PACKAGE) makeman
#
# build: man
ifneq (,)
This makefile requires GNU Make.
endif
# This variable *must* be set when called
PACKAGE ?= package
# Optional variables to set
MANSECT ?= 1
PODCENTER ?= User Commands
PODDATE ?= $$(date "+%Y-%m-%d")
# Directories
MANSRC ?=
MANDEST ?= $(MANSRC)
MANPOD ?= $(MANSRC)$(PACKAGE).$(MANSECT).pod
MANPAGE ?= $(MANDEST)$(PACKAGE).$(MANSECT)
POD2MAN ?= pod2man
POD2MAN_FLAGS ?= --utf8
makeman: $(MANPAGE)
$(MANPAGE): $(MANPOD)
# make target - create manual page from a *.pod page
podchecker $(MANPOD)
LC_ALL= LANG=C $(POD2MAN) $(POD2MAN_FLAGS) \
--center="$(PODCENTER)" \
--date="$(PODDATE)" \
--name="$(PACKAGE)" \
--section="$(MANSECT)" \
$(MANPOD) \
| sed 's,[Pp]erl v[0-9.]\+,$(PACKAGE),' \
> $(MANPAGE) && \
rm -f pod*.tmp
# End of of Makefile part
dilshod-xlsx2csv-a926140/man/xlsx2csv.1.pod 0000664 0000000 0000000 00000005435 15137152307 0020427 0 ustar 00root root 0000000 0000000 # Copyright
#
# Copyright (C) 2011-2012 Jari Aalto
#
# License
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
#
# Description
#
# To learn what TOP LEVEL sections to use in manual page,
# see POSIX/Susv standard about "Utility Description Defaults" at
# http://www.opengroup.org/onlinepubs/009695399/utilities/xcu_chap01.html#tag_01_11
#
# This manual page in Perl POD format. Read more at
# http://perldoc.perl.org/perlpod.html or run command:
#
# perldoc perlpod | less
#
# To check the syntax:
#
# podchecker *.pod
#
# To create manual:
#
# pod2man PROGRAM.N.pod > PROGRAM.N
=pod
=head1 NAME
xlsx2csv - Convert xlsx xml files to csv format
=head1 SYNOPSIS
xlsx2csv [options] INFILE [OUTPUT FILE]
=head1 DESCRIPTION
The conversion uses Expat SAX parser for xml processing.
=head1 STDIN
Use "-" for INFILE to read from the STDIN.
=head1 OPTIONS
=over 4
=item B<-d DELIMITER, --delimiter=DELIMITER>
Output csv columns delimiter. Use "tab" or "x09" for
tab. Defaults to comma.
=item B<-f DATEFORMAT, --dateformat=DATEFORMAT>
Set date/time format. See strftime(3) for %-format specifiers. An
example "%Y-%m-%d".
=item B<-i, --ignoreempty>
Skip empty lines.
=item B<-p SHEETDELIMITER, --sheetdelimiter=SHEETDELIMITER>
Sheet delimiter used to separate sheets, pass "" if you don't want
delimiters. DEfaults to "--------".
=item B<-q QUOTING, --quoting=QUOTING>
Output csv fields quoting. Use "none" "minimal" "nonnumeric" or "all".
Defaults to none.
=item B<-r, --recursive>
Convert recursively.
=item B<-s SHEETID, --sheet=SHEETID>
Sheet to convert (0 for all sheets).
=item B<-h, --help>
Display short help and exit.
=item B<--version>
Display program's version number and exit.
=back
=head1 ENVIRONMENT
None.
=head1 FILES
None.
=head1 SEE ALSO
catdoc(1)
=head1 AUTHORS
Program was written by Dilshod Temirkhodjaev
This manual page was written by Jari Aalto . Released
under license GNU GPL version 2 or (at your option) any later
version. For more information about the license, visit
.
=cut
dilshod-xlsx2csv-a926140/pyproject.toml 0000664 0000000 0000000 00000003467 15137152307 0020134 0 ustar 00root root 0000000 0000000 [build-system]
requires = ["setuptools>=61.2.0", "wheel", "setuptools_scm[toml]>=3.4.3"]
build-backend = "setuptools.build_meta"
[project]
name = "xlsx2csv"
authors = [{name = "Dilshod Temirkhdojaev", email = "tdilshod@gmail.com"}]
description = "xlsx to csv converter"
readme = "README.md"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: End Users/Desktop",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 2",
"Programming Language :: Python :: 2.4",
"Programming Language :: Python :: 2.5",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.0",
"Programming Language :: Python :: 3.1",
"Programming Language :: Python :: 3.2",
"Programming Language :: Python :: 3.3",
"Programming Language :: Python :: 3.4",
"Programming Language :: Python :: 3.5",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: 3.14",
"Topic :: Office/Business",
"Topic :: Utilities",
]
urls = {Homepage = "http://github.com/dilshod/xlsx2csv"}
#dynamic = ["version"]
version = "0.8.6"
[project.scripts]
xlsx2csv = "xlsx2csv:main"
[tool.setuptools]
py-modules = ["xlsx2csv"]
include-package-data = false
[tool.setuptools_scm]
dilshod-xlsx2csv-a926140/test/ 0000775 0000000 0000000 00000000000 15137152307 0016165 5 ustar 00root root 0000000 0000000 dilshod-xlsx2csv-a926140/test/datetime.csv 0000664 0000000 0000000 00000000025 15137152307 0020473 0 ustar 00root root 0000000 0000000 2011-09-15 15:22:00
dilshod-xlsx2csv-a926140/test/datetime.xlsx 0000664 0000000 0000000 00000077757 15137152307 0020730 0 ustar 00root root 0000000 0000000 PK ! t8úb < Ë[Content_Types].xml ¢Ç( ¬SÉNÃ0½#ñ‘¯(qË!”¤–#ôP>ÀÄ“Ä4^äqKû÷L\ZAT‚ªr‰•ØoÉ›ç|¶Ñ]²�Êš‚M³ KÀTV*Óìuñ”Þ²ƒ0RtÖ@Á¶€lV^^ä‹Lm°`mîŽs¬ZÐ3ëÀÐNm½�^}Ã�¨–¢~=™ÜðÊš &¤¡ç`eþ µXu!yÜÐç�‚³ä~w®—*˜p®S•d”÷»¼Ì_ȸW’¹ðáYh:Å7ÿ°~ùfí2'Y9pšÚºVH[4ùËÐy[€ »,®™Ê\�ëcØv€ÿI÷ÊG{wÐ"Sº�§g§iþì§…<.ç«þlÂ�̵hîCj»‡Ó{t�N�
F£>(ÒOtú»(AÑæñî—Ÿ ÿÿ PK ! }ÌTž
Ý ¶_rels/.rels ¢²( ¬’MNÃ0…÷HÜÁš}ã´ „P�nRw…LíibÿÈv!½=†EC¤U‚¥=ãçïÍ›õf0={§µ³–E Œ¬tJÛFÀký´¸Z…½³$àH6ÕõÕú…zLùQlµ�,«Ø( MÉ?peKcá<Ù\Ù»`0åch¸GÙaC|U–w<üÔ€j¢É¶J@ت`õÑçŸÿ¢Í
%T˜�KháC&Ig/¬ÆÐP œ|Î×ñ»£ÈÔÀÏÝ^äö{-éÑɃ!›Îxæ4$²ŠÔ<z?G´üO¢)ó8Ÿ¡ç.t;çº9–Õå,¿¯ÂWjfgQ÷#È)¨SxóÔ|ÅÅ'KY} ÿÿ PK ! Ð?dÝá - xl/_rels/workbook.xml.rels ¢( ¬‘ÏJAÆï‚ï0äîf·‚ˆt¶z•ú ÃlöÝ�&iußÞ°bµPôÒKàKÈ—_Ö›�i4GÊ<Ä`¡*J0|l†ÐYxÛ½Ü=‚aq¡qcda&†M}{³~¥Ñ‰.q?$6êØB/’žÙ÷49.b¢ “6æÉ‰ÊÜar~ï:ÂUY>`þíõ™§Ù6ò¶©Àìæ¤—ÿ÷Žm;xzŽþ0Q�'ð=æ=÷D¢¦.w$N-ÆeRJxfuMÑ�èd‘¸Ô?î¯ÉÀ2�úÑS_ú;<{rý ÿÿ PK ! è8ŸÁµ
xl/workbook.xmlœRMoÛ0½Øtoä¤MѶ‹®]± ÃPì£=«2‘DC¢g÷ß�V’mÅ.Ãt¡(Š�|�,¯'ïĈÉb¨ärQHÁ`cî’߿ݟ]I‘H‡F;PÉHòº~û¦1îŸ÷‚BªdGÔo”J¦¯Ó{i1zMìÆ�J}ݤ€¼S«¢¸T^Û ›ø/ضÖÀšÁC H§‰ÛO�퓬ËÖ:x<0ºï?kÏ}ON
§}h,ASÉvq„WqèßÖÍÑu±–ªþEò!ŠF,ß,+Òá¸
û›�ríJ²pz ¼EÏ4Sz°†¾Ìš•z´0¦ß˜³+¦'+y¶b€—WÞ˜CO¶¡®’«åeÁ?oÁî:âNÖçséç/s•\ó®¦þ(—õæ²ÙŠ�Åø:Ï Ó`»e¾|�Ë—¸m–á”f´3Ì~6ùãyÁG
ƒÁ1òn9r$ }JT—l�3õÓ_CõÖDLØÒ W‡yò“�¼Wǵ¢ýÿìºôÓæ&šn{'î�Þñ V™7Ç�ZU§5® ÿÿ PK ! J´„¹� Š
xl/styles.xml”SMoÛ0½èto•èÐ
¶{ÐC{i6ìJG´#@†Dqý(;±“Ë>.6Iñ=’OTù|rV|`L&øJn6R ?m|WÉûÝý“‰Àk°Ác%GLò¹¾ûR&-¾I0…O•<õß•J‡#:H¡GÏ'mˆˆÝØ©ÔG�2ÈYUl6_•ãe]¶ÁS‡0xªdqÔeú`¹¯�TuéÁáìÿĨÁCª� Öü§¿¥O¨Ä0cím]ÔeDýŽq¶÷cÏã{a®:åeø²»ã¶x¼¨©`]6!jý2ñ–'žCui±%ž+šî˜ÿzþ6�(86´�.x°lªâlð8´ö=_̯ö†ûÔ
?¸�£]I¾â¬ÙÅäÎæÌ7;™ÿšm澢͗ôÿ´âÔ.ü7è¢ø—®¸€¾·ãÛàŒ»iÃxI&�sÓÜæ•7J,3‰¼M•|Ë`+Wâf0–Œ_º\U`N}Zu�V’ áW�_ª°¼[,í—ÃJ®ö+j3¸oS³ë#ª ÿÿ PK ! È{Ö©ü Š xl/theme/theme1.xmlìYMoE¾#ñF{oc'NGuªØ±hÓF±[Ôãx=öN3»³š'ñ
µG$$DA\�¸q@@¥VâR~M ŠÔ¿À;3»ë�xÜ8!€€æÐzgŸ÷ûkföú�㘡C"$åI#¨^ˆ$!ÐdÔîõ:WÖ$N˜ñ„4‚ ‘Á�Íwß¹Ž7TDb‚€>‘¸DJ¥KK2„e,¯ò”$ðnÈEŒ<ŠÑÒ@à#à³¥åJem)Æ4 P‚c`{w8¤!A=Í2ØÌ™·<&Jê…�‰®fM
ƒT5BNd‹ tˆY# 9~Ô#Ç*@K/AÅüK›×—ðFFÄÔÚ]ÇüetÁà`ÙÈ£~!´Ú©Õ¯mü
€©Y\»Ýnµ«?Àa–Z]Ê