pax_global_header 0000666 0000000 0000000 00000000064 14651732350 0014520 g ustar 00root root 0000000 0000000 52 comment=bed9ef1812f426be5cf6d696af0459175eee2c0a
xlsx2csv-0.8.3/ 0000775 0000000 0000000 00000000000 14651732350 0013324 5 ustar 00root root 0000000 0000000 xlsx2csv-0.8.3/.github/ 0000775 0000000 0000000 00000000000 14651732350 0014664 5 ustar 00root root 0000000 0000000 xlsx2csv-0.8.3/.github/workflows/ 0000775 0000000 0000000 00000000000 14651732350 0016721 5 ustar 00root root 0000000 0000000 xlsx2csv-0.8.3/.github/workflows/publish-to-test-pypi.yml 0000664 0000000 0000000 00000006256 14651732350 0023477 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
xlsx2csv-0.8.3/.gitignore 0000664 0000000 0000000 00000000601 14651732350 0015311 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
xlsx2csv-0.8.3/CHANGELOG 0000664 0000000 0000000 00000005102 14651732350 0014534 0 ustar 00root root 0000000 0000000 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
xlsx2csv-0.8.3/LICENSE.txt 0000664 0000000 0000000 00000002051 14651732350 0015145 0 ustar 00root root 0000000 0000000 Copyright (c) 2022 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.
xlsx2csv-0.8.3/MANIFEST.in 0000664 0000000 0000000 00000000100 14651732350 0015051 0 ustar 00root root 0000000 0000000 include test/*
include man/*
include README
include LICENSE.txt
xlsx2csv-0.8.3/README.md 0000664 0000000 0000000 00000007742 14651732350 0014615 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.12
## 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 - columns delimiter in csv, 'tab' or 'x09'
for a tab (default: comma ',')
-l LINETERMINATOR, --lineterminator LINETERMINATOR
line terminator - lines 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 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 named matching given pattern, only
effects when -a option is enabled.
-E EXCLUDE_SHEET_PATTERN [EXCLUDE_SHEET_PATTERN ...], --exclude_sheet_pattern EXCLUDE_SHEET_PATTERN [EXCLUDE_SHEET_PATTERN ...]
exclude sheets named matching given pattern, only
effects when -a option is enabled.
-m, --merge-cells merge cells
```
Usage with folder containing multiple `xlxs` files:
```
python xlsx2csv.py /path/to/input/dir /path/to/output/dir
```
will output each file in the input dir converted to `.csv` in the output dir. If omitting the output dir it will output the converted files in the input dir
Usage from within Python:
```
from xlsx2csv import Xlsx2csv
Xlsx2csv("myfile.xlsx", outputencoding="utf-8").convert("myfile.csv")
```
Expat SAX parser used for xml parsing.
See alternatives:
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)
xlsx2csv-0.8.3/man/ 0000775 0000000 0000000 00000000000 14651732350 0014077 5 ustar 00root root 0000000 0000000 xlsx2csv-0.8.3/man/Makefile 0000664 0000000 0000000 00000000204 14651732350 0015533 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
xlsx2csv-0.8.3/man/pod2man.mk 0000664 0000000 0000000 00000003356 14651732350 0015777 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
xlsx2csv-0.8.3/man/xlsx2csv.1.pod 0000664 0000000 0000000 00000005435 14651732350 0016545 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
xlsx2csv-0.8.3/pyproject.toml 0000664 0000000 0000000 00000003333 14651732350 0016242 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",
"Topic :: Office/Business",
"Topic :: Utilities",
]
urls = {Homepage = "http://github.com/dilshod/xlsx2csv"}
#dynamic = ["version"]
version = "0.8.3"
[project.scripts]
xlsx2csv = "xlsx2csv:main"
[tool.setuptools]
py-modules = ["xlsx2csv"]
include-package-data = false
[tool.setuptools_scm]
xlsx2csv-0.8.3/test/ 0000775 0000000 0000000 00000000000 14651732350 0014303 5 ustar 00root root 0000000 0000000 xlsx2csv-0.8.3/test/datetime.csv 0000664 0000000 0000000 00000000025 14651732350 0016611 0 ustar 00root root 0000000 0000000 2011-09-15 15:22:00
xlsx2csv-0.8.3/test/datetime.xlsx 0000664 0000000 0000000 00000077757 14651732350 0017046 0 ustar 00root root 0000000 0000000 PK ! t8b < [Content_Types].xml ( SN0#(q!#P>ē4^qKL\ZATroɛ|]ʚM KTV*u0Rt@lV^^䋭Lm`msZ3Nm^}Ý~=ʚ &`e Xu!y~w*pSd_ȸWYh:7~f2'Y9pںVH[4y[,\cvIG{w"Sgi<.lhCj{tN
F>(Ot(A PK ! }T
_rels/.rels ( MN0H} PnRwLibv!=ECU=͛f0={E tJFkZ$H6zLQl,(M?peKc<\ٻ`0chGaC|Uw<ԀjɶJ@ت`
%TKhC&Ig/P|^{-Ƀ!x4$<z?GO)8.t;9,WjfgQ#)Sx|'KY} PK ! ?d - xl/_rels/workbook.xml.rels ( JA0ftz lݝ&iuްbPKKȗ_֛i4G<`*J0|lYx۽=aqqcda&M}{~щ.q?$6B/49.b6ɉar~:UY>`6椗m;xz0Q'==D.w$N-eRJxfuMѐd?2S_;<{r PK ! 8
xl/workbook.xmlRMo0toM] P=2DCgߏVm.t(|,'brQH`cî߿ݟ]IHF;PH~1BdGoJ{i1zMƝJ}ݤST^ /ضCHO퓬:x<0?k}ON
}h,ASvqWquE!F,,+
rJpz E4Szz0ߘ+'+ybWޘCOe?o:Ns/s\(ي: `e|˗mf3~6yG
1n9r$ }JTl3_CDL WyWǵ&n{' V7ZU5 PK ! J
xl/styles.xmlSMo0to
{C{i6JG#@Dq(;>.6I=OT|rV|`L&Jn6R?m|Wkc%GLR&-I0O<ߕJ#:HG'mةG2YUl6_e]S0xdqe`TuĨC O0cm]eDqc{a:ex`]6!j2'Cui%+z6(86.xll8=_̯
?]I7;m澢͗.7ixI&s7J,3M|`+Wf0_\U`N}ZuVW_[,J+j3oS# PK ! {֩ xl/theme/theme1.xmlYMoE#F{oc'NGuرhF[x=N3'
G$$DA\q@@VR~MԿ;3x8!zgkf㘡C"$I#^$!d:W$N4 w߹7TDb>DJKK2e,$nE<@#Jem)4 Pc`{w8!A=2̙<&JꅐfM
T5BNd tY# 9~#*@K/AKחFF]et`~!کկm
Y\n?aZ]