diff options
| author | Kenneth Reitz <me@kennethreitz.com> | 2011-05-13 00:32:02 -0400 |
|---|---|---|
| committer | Kenneth Reitz <me@kennethreitz.com> | 2011-05-13 00:32:02 -0400 |
| commit | 9399bf2fe7cdb32b593dfa0012b6fc16f877a9ec (patch) | |
| tree | fc4291a8fe5d6cd8c8dd37754a20ea553e104039 /tablib/packages | |
| parent | cbdaa09e8324767926e49e814170a325758c072b (diff) | |
| download | tablib-9399bf2fe7cdb32b593dfa0012b6fc16f877a9ec.tar.gz | |
no vendored tests
Diffstat (limited to 'tablib/packages')
72 files changed, 0 insertions, 4793 deletions
diff --git a/tablib/packages/openpyxl/tests/__init__.py b/tablib/packages/openpyxl/tests/__init__.py deleted file mode 100644 index de89032..0000000 --- a/tablib/packages/openpyxl/tests/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# file openpyxl/tests/__init__.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni diff --git a/tablib/packages/openpyxl/tests/helper.py b/tablib/packages/openpyxl/tests/helper.py deleted file mode 100644 index ae9c8b4..0000000 --- a/tablib/packages/openpyxl/tests/helper.py +++ /dev/null @@ -1,94 +0,0 @@ -# file openpyxl/tests/helper.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os -import os.path -import shutil -import difflib -from StringIO import StringIO -from pprint import pprint -from tempfile import gettempdir - -# package imports -from openpyxl.shared.xmltools import fromstring, ElementTree -from openpyxl.shared.xmltools import pretty_indent - -# constants -DATADIR = os.path.abspath(os.path.join(os.path.dirname(__file__), 'test_data')) -TMPDIR = os.path.join(gettempdir(), 'openpyxl_test_temp') - - -def make_tmpdir(): - try: - os.makedirs(TMPDIR) - except OSError: - pass - - -def clean_tmpdir(): - if os.path.isdir(TMPDIR): - shutil.rmtree(TMPDIR, ignore_errors = True) - - -def assert_equals_file_content(reference_file, fixture, filetype = 'xml'): - if os.path.isfile(fixture): - with open(fixture) as fixture_file: - fixture_content = fixture_file.read() - else: - fixture_content = fixture - - with open(reference_file) as expected_file: - expected_content = expected_file.read() - - if filetype == 'xml': - fixture_content = fromstring(fixture_content) - pretty_indent(fixture_content) - temp = StringIO() - ElementTree(fixture_content).write(temp) - fixture_content = temp.getvalue() - - expected_content = fromstring(expected_content) - pretty_indent(expected_content) - temp = StringIO() - ElementTree(expected_content).write(temp) - expected_content = temp.getvalue() - - fixture_lines = fixture_content.split('\n') - expected_lines = expected_content.split('\n') - differences = list(difflib.unified_diff(expected_lines, fixture_lines)) - if differences: - temp = StringIO() - pprint(differences, stream = temp) - assert False, 'Differences found : %s' % temp.getvalue() - -def get_xml(xml_node): - - io = StringIO() - ElementTree(xml_node).write(io, encoding = 'UTF-8') - ret = io.getvalue() - io.close() - return ret.replace('\n', '') diff --git a/tablib/packages/openpyxl/tests/test_cell.py b/tablib/packages/openpyxl/tests/test_cell.py deleted file mode 100644 index edc35c0..0000000 --- a/tablib/packages/openpyxl/tests/test_cell.py +++ /dev/null @@ -1,200 +0,0 @@ -# file openpyxl/tests/test_cell.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from datetime import time, datetime - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -# package imports -from openpyxl.worksheet import Worksheet -from openpyxl.workbook import Workbook -from openpyxl.shared.exc import ColumnStringIndexException, \ - CellCoordinatesException, DataTypeException -from openpyxl.cell import column_index_from_string, \ - coordinate_from_string, get_column_letter, Cell, absolute_coordinate - - -def test_coordinates(): - column, row = coordinate_from_string('ZF46') - eq_("ZF", column) - eq_(46, row) - - -@raises(CellCoordinatesException) -def test_invalid_coordinate(): - coordinate_from_string('AAA') - - -def test_absolute(): - eq_('$ZF$51', absolute_coordinate('ZF51')) - -def test_absolute_multiple(): - - eq_('$ZF$51:$ZF$53', absolute_coordinate('ZF51:ZF$53')) - - -def test_column_index(): - eq_(10, column_index_from_string('J')) - eq_(270, column_index_from_string('jJ')) - eq_(7030, column_index_from_string('jjj')) - - -def test_bad_column_index(): - - @raises(ColumnStringIndexException) - def _check(bad_string): - column_index_from_string(bad_string) - - bad_strings = ('JJJJ', '', '$', '1',) - for bad_string in bad_strings: - yield _check, bad_string - - -def test_column_letter_boundries(): - assert_raises(ColumnStringIndexException, get_column_letter, 0) - assert_raises(ColumnStringIndexException, get_column_letter, 18279) - - -def test_column_letter(): - eq_('ZZZ', get_column_letter(18278)) - eq_('JJJ', get_column_letter(7030)) - eq_('AB', get_column_letter(28)) - eq_('AA', get_column_letter(27)) - eq_('Z', get_column_letter(26)) - - -def test_initial_value(): - cell = Cell(None, 'A', 1, value = '17.5') - eq_(cell.TYPE_NUMERIC, cell.data_type) - - -class TestCellValueTypes(): - - @classmethod - def setup_class(cls): - cls.cell = Cell(None, 'A', 1) - - def test_1st(self): - eq_(self.cell.TYPE_NULL, self.cell.data_type) - - def test_null(self): - self.cell.value = None - eq_(self.cell.TYPE_NULL, self.cell.data_type) - - def test_numeric(self): - - def check_numeric(value): - self.cell.value = value - eq_(self.cell.TYPE_NUMERIC, self.cell.data_type) - - values = (42, '4.2', '-42.000', '0', 0, 0.0001, '0.9999', '99E-02') - for value in values: - yield check_numeric, value - - def test_string(self): - self.cell.value = 'hello' - eq_(self.cell.TYPE_STRING, self.cell.data_type) - - def test_formula(self): - self.cell.value = '=42' - eq_(self.cell.TYPE_FORMULA, self.cell.data_type) - - def test_boolean(self): - self.cell.value = True - eq_(self.cell.TYPE_BOOL, self.cell.data_type) - self.cell.value = False - eq_(self.cell.TYPE_BOOL, self.cell.data_type) - - def test_error_codes(self): - - def check_error(): - eq_(self.cell.TYPE_ERROR, self.cell.data_type) - - for error_string in self.cell.ERROR_CODES.keys(): - self.cell.value = error_string - yield check_error - - -def test_data_type_check(): - cell = Cell(None, 'A', 1) - cell.bind_value(None) - eq_(Cell.TYPE_NULL, cell._data_type) - - cell.bind_value('.0e000') - eq_(Cell.TYPE_NUMERIC, cell._data_type) - - cell.bind_value('-0.e-0') - eq_(Cell.TYPE_NUMERIC, cell._data_type) - - cell.bind_value('1E') - eq_(Cell.TYPE_STRING, cell._data_type) - -@raises(DataTypeException) -def test_set_bad_type(): - cell = Cell(None, 'A', 1) - cell.set_value_explicit(1, 'q') - - -def test_time(): - - def check_time(raw_value, coerced_value): - cell.value = raw_value - eq_(cell.value, coerced_value) - eq_(cell.TYPE_NUMERIC, cell.data_type) - - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - values = (('03:40:16', time(3, 40, 16)), ('03:40', time(3, 40)),) - for raw_value, coerced_value in values: - yield check_time, raw_value, coerced_value - - -def test_date_format_on_non_date(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - cell.value = datetime.now() - cell.value = 'testme' - eq_('testme', cell.value) - - -def test_repr(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - eq_(repr(cell), '<Cell Sheet1.A1>', 'Got bad repr: %s' % repr(cell)) - -def test_is_date(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - cell.value = datetime.now() - eq_(cell.is_date(), True) - cell.value = 'testme' - eq_('testme', cell.value) - eq_(cell.is_date(), False) diff --git a/tablib/packages/openpyxl/tests/test_chart.py b/tablib/packages/openpyxl/tests/test_chart.py deleted file mode 100644 index 2605a2b..0000000 --- a/tablib/packages/openpyxl/tests/test_chart.py +++ /dev/null @@ -1,131 +0,0 @@ -# file openpyxl/tests/test_chart.py
-
-# Copyright (c) 2010 openpyxl
-#
-# 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.
-#
-# @license: http://www.opensource.org/licenses/mit-license.php
-# @author: Eric Gazoni
-
-from nose.tools import eq_
-
-from openpyxl.tests.helper import get_xml
-from openpyxl.shared.xmltools import Element
-from openpyxl.writer.charts import ChartWriter
-from openpyxl.workbook import Workbook
-from openpyxl.chart import BarChart, ScatterChart, Serie, Reference
-from openpyxl.style import Color
-
-class TestChartWriter(object):
-
- def setUp(self):
-
- wb = Workbook()
- ws = wb.get_active_sheet()
- ws.title = u'data'
- for i in range(10):
- ws.cell(row = i, column = 0).value = i
- self.chart = BarChart()
- self.chart.title = 'TITLE'
- self.chart.add_serie(Serie(Reference(ws, (0, 0), (10, 0))))
- self.chart._series[-1].color = Color.GREEN
- self.cw = ChartWriter(self.chart)
- self.root = Element('test')
-
- def test_write_title(self):
- self.cw._write_title(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title></test>')
-
- def test_write_xaxis(self):
-
- self.cw._write_axis(self.root, self.chart.x_axis, 'c:catAx')
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx></test>')
-
- def test_write_yaxis(self):
-
- self.cw._write_axis(self.root, self.chart.y_axis, 'c:valAx')
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></test>')
-
- def test_write_series(self):
-
- self.cw._write_series(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser></test>')
-
- def test_write_legend(self):
-
- self.cw._write_legend(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>')
-
- def test_write_print_settings(self):
-
- self.cw._write_print_settings(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:printSettings><c:headerFooter /><c:pageMargins b="0.75" footer="0.3" header="0.3" l="0.7" r="0.7" t="0.75" /><c:pageSetup /></c:printSettings></test>')
-
- def test_write_chart(self):
-
- self.cw._write_chart(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:chart><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="1.28571428571" /><c:y val="0.2125" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:barChart><c:barDir val="col" /><c:grouping val="clustered" /><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser><c:marker val="1" /><c:axId val="60871424" /><c:axId val="60873344" /></c:barChart><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></test>')
-
-
-class TestScatterChartWriter(object):
-
- def setUp(self):
-
- wb = Workbook()
- ws = wb.get_active_sheet()
- ws.title = u'data'
- for i in range(10):
- ws.cell(row = i, column = 0).value = i
- ws.cell(row = i, column = 1).value = i
- self.scatterchart = ScatterChart()
- self.scatterchart.add_serie(Serie(Reference(ws, (0, 0), (10, 0)),
- xvalues = Reference(ws, (0, 1), (10, 1))))
- self.cw = ChartWriter(self.scatterchart)
- self.root = Element('test')
-
- def test_write_xaxis(self):
-
- self.cw._write_axis(self.root, self.scatterchart.x_axis, 'c:valAx')
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="b" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></test>')
-
-
- def test_write_yaxis(self):
-
- self.cw._write_axis(self.root, self.scatterchart.y_axis, 'c:valAx')
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></test>')
-
- def test_write_series(self):
-
- self.cw._write_series(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:ser><c:idx val="0" /><c:order val="0" /><c:marker><c:symbol val="none" /></c:marker><c:xVal><c:numRef><c:f>data!$B$1:$B$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:xVal><c:yVal><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:yVal></c:ser></test>')
-
- def test_write_legend(self):
-
- self.cw._write_legend(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>')
-
- def test_write_print_settings(self):
-
- self.cw._write_print_settings(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:printSettings><c:headerFooter /><c:pageMargins b="0.75" footer="0.3" header="0.3" l="0.7" r="0.7" t="0.75" /><c:pageSetup /></c:printSettings></test>')
-
- def test_write_chart(self):
-
- self.cw._write_chart(self.root)
- eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:chart><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="1.28571428571" /><c:y val="0.2125" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:scatterChart><c:scatterStyle val="lineMarker" /><c:ser><c:idx val="0" /><c:order val="0" /><c:marker><c:symbol val="none" /></c:marker><c:xVal><c:numRef><c:f>data!$B$1:$B$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:xVal><c:yVal><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:yVal></c:ser><c:marker val="1" /><c:axId val="60871424" /><c:axId val="60873344" /></c:scatterChart><c:valAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="b" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></test>')
diff --git a/tablib/packages/openpyxl/tests/test_dump.py b/tablib/packages/openpyxl/tests/test_dump.py deleted file mode 100644 index 1e18ace..0000000 --- a/tablib/packages/openpyxl/tests/test_dump.py +++ /dev/null @@ -1,109 +0,0 @@ - -# file openpyxl/tests/test_dump.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from datetime import time, datetime - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -from openpyxl.workbook import Workbook -from openpyxl.cell import get_column_letter - -from openpyxl.reader.excel import load_workbook - -from openpyxl.writer.strings import StringTableBuilder - -from tempfile import NamedTemporaryFile -import os -import shutil - -def test_dump_sheet(): - - test_file = NamedTemporaryFile(prefix='openpyxl.', suffix='.xlsx', delete=False) - test_file.close() - test_filename = test_file.name - - wb = Workbook(optimized_write = True) - - ws = wb.create_sheet() - - letters = [get_column_letter(x+1) for x in xrange(20)] - - expected_rows = [] - - for row in xrange(20): - - expected_rows.append(['%s%d' % (letter, row+1) for letter in letters]) - - for row in xrange(20): - - expected_rows.append([(row+1) for letter in letters]) - - for row in xrange(10): - - expected_rows.append([datetime(2010, ((x % 12)+1), row+1) for x in range(len(letters))]) - - for row in xrange(20): - - expected_rows.append(['=%s%d' % (letter, row+1) for letter in letters]) - - for row in expected_rows: - - ws.append(row) - - wb.save(test_filename) - - wb2 = load_workbook(test_filename, True) - - ws = wb2.worksheets[0] - - - for ex_row, ws_row in zip(expected_rows[:-20], ws.iter_rows()): - - for ex_cell, ws_cell in zip(ex_row, ws_row): - - eq_(ex_cell, ws_cell.internal_value) - - os.remove(test_filename) - - -def test_table_builder(): - - sb = StringTableBuilder() - - result = {'a':0, 'b':1, 'c':2, 'd':3} - - for letter in sorted(result.keys()): - - for x in range(5): - - sb.add(letter) - - table = dict(sb.get_table()) - - for key,idx in result.items(): - eq_(idx, table[key]) diff --git a/tablib/packages/openpyxl/tests/test_iter.py b/tablib/packages/openpyxl/tests/test_iter.py deleted file mode 100644 index a68237d..0000000 --- a/tablib/packages/openpyxl/tests/test_iter.py +++ /dev/null @@ -1,112 +0,0 @@ -# file openpyxl/tests/test_iter.py
-
-# Copyright (c) 2010 openpyxl
-#
-# 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.
-#
-# @license: http://www.opensource.org/licenses/mit-license.php
-# @author: Eric Gazoni
-
-from nose.tools import eq_, raises, assert_raises
-import os.path as osp
-from openpyxl.tests.helper import DATADIR
-from openpyxl.reader.iter_worksheet import get_range_boundaries
-from openpyxl.reader.excel import load_workbook
-import datetime
-
-class TestWorksheet(object):
-
- workbook_name = osp.join(DATADIR, 'genuine', 'empty.xlsx')
-
-class TestText(TestWorksheet):
- sheet_name = 'Sheet1 - Text'
-
- expected = [['This is cell A1 in Sheet 1', None, None, None, None, None, None],
- [None, None, None, None, None, None, None],
- [None, None, None, None, None, None, None],
- [None, None, None, None, None, None, None],
- [None, None, None, None, None, None, 'This is cell G5'], ]
-
- def test_read_fast_integrated(self):
-
- wb = load_workbook(filename = self.workbook_name, use_iterators = True)
- ws = wb.get_sheet_by_name(name = self.sheet_name)
-
- for row, expected_row in zip(ws.iter_rows(), self.expected):
-
- row_values = [x.internal_value for x in row]
-
- eq_(row_values, expected_row)
-
-
- def test_get_boundaries_range(self):
-
- eq_(get_range_boundaries('C1:C4'), (3, 1, 3, 4))
-
- def test_get_boundaries_one(self):
-
-
- eq_(get_range_boundaries('C1'), (3, 1, 4, 1))
-
- def test_read_single_cell_range(self):
-
- wb = load_workbook(filename = self.workbook_name, use_iterators = True)
- ws = wb.get_sheet_by_name(name = self.sheet_name)
-
- eq_('This is cell A1 in Sheet 1', list(ws.iter_rows('A1'))[0][0].internal_value)
-
-class TestIntegers(TestWorksheet):
-
- sheet_name = 'Sheet2 - Numbers'
-
- expected = [[x + 1] for x in xrange(30)]
-
- query_range = 'D1:E30'
-
- def test_read_fast_integrated(self):
-
- wb = load_workbook(filename = self.workbook_name, use_iterators = True)
- ws = wb.get_sheet_by_name(name = self.sheet_name)
-
- for row, expected_row in zip(ws.iter_rows(self.query_range), self.expected):
-
- row_values = [x.internal_value for x in row]
-
- eq_(row_values, expected_row)
-
-class TestFloats(TestWorksheet):
-
- sheet_name = 'Sheet2 - Numbers'
- query_range = 'K1:L30'
- expected = expected = [[(x + 1) / 100.0] for x in xrange(30)]
-
-class TestDates(TestWorksheet):
-
- sheet_name = 'Sheet4 - Dates'
-
- def test_read_single_cell_date(self):
-
- wb = load_workbook(filename = self.workbook_name, use_iterators = True)
- ws = wb.get_sheet_by_name(name = self.sheet_name)
-
- eq_(datetime.datetime(1973, 5, 20), list(ws.iter_rows('A1'))[0][0].internal_value)
- eq_(datetime.datetime(1973, 5, 20, 9, 15, 2), list(ws.iter_rows('C1'))[0][0].internal_value)
-
-
-
diff --git a/tablib/packages/openpyxl/tests/test_meta.py b/tablib/packages/openpyxl/tests/test_meta.py deleted file mode 100644 index 3aefdcf..0000000 --- a/tablib/packages/openpyxl/tests/test_meta.py +++ /dev/null @@ -1,50 +0,0 @@ -# file openpyxl/tests/test_meta.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os.path - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content -from openpyxl.writer.workbook import write_content_types, write_root_rels -from openpyxl.workbook import Workbook - - -def test_write_content_types(): - wb = Workbook() - wb.create_sheet() - wb.create_sheet() - content = write_content_types(wb) - reference_file = os.path.join(DATADIR, 'writer', 'expected', - '[Content_Types].xml') - assert_equals_file_content(reference_file, content) - - -def test_write_root_rels(): - wb = Workbook() - content = write_root_rels(wb) - reference_file = os.path.join(DATADIR, 'writer', 'expected', '.rels') - assert_equals_file_content(reference_file, content) diff --git a/tablib/packages/openpyxl/tests/test_named_range.py b/tablib/packages/openpyxl/tests/test_named_range.py deleted file mode 100644 index a56ed86..0000000 --- a/tablib/packages/openpyxl/tests/test_named_range.py +++ /dev/null @@ -1,102 +0,0 @@ -# file openpyxl/tests/test_named_range.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os.path - -# 3rd-party imports -from nose.tools import eq_, assert_raises - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.namedrange import split_named_range -from openpyxl.reader.workbook import read_named_ranges -from openpyxl.shared.exc import NamedRangeException -from openpyxl.reader.excel import load_workbook - - -def test_split(): - eq_([('My Sheet', '$D$8'), ], split_named_range("'My Sheet'!$D$8")) - - -def test_split_no_quotes(): - eq_([('HYPOTHESES', '$B$3:$L$3'), ], split_named_range('HYPOTHESES!$B$3:$L$3')) - - -def test_bad_range_name(): - assert_raises(NamedRangeException, split_named_range, 'HYPOTHESES$B$3') - - -def test_read_named_ranges(): - - class DummyWs(object): - title = 'My Sheeet' - - def __str__(self): - return self.title - - class DummyWB(object): - - def get_sheet_by_name(self, name): - return DummyWs() - - with open(os.path.join(DATADIR, 'reader', 'workbook.xml')) as handle: - content = handle.read() - named_ranges = read_named_ranges(content, DummyWB()) - eq_(["My Sheeet!$D$8"], [str(range) for range in named_ranges]) - -def test_oddly_shaped_named_ranges(): - - ranges_counts = ((4, 'TEST_RANGE'), - (3, 'TRAP_1'), - (13, 'TRAP_2')) - - def check_ranges(ws, count, range_name): - - eq_(count, len(ws.range(range_name))) - - wb = load_workbook(os.path.join(DATADIR, 'genuine', 'merge_range.xlsx'), - use_iterators = False) - - ws = wb.worksheets[0] - - for count, range_name in ranges_counts: - - yield check_ranges, ws, count, range_name - - -def test_merged_cells_named_range(): - - wb = load_workbook(os.path.join(DATADIR, 'genuine', 'merge_range.xlsx'), - use_iterators = False) - - ws = wb.worksheets[0] - - cell = ws.range('TRAP_3') - - eq_('B15', cell.get_coordinate()) - - eq_(10, cell.value) diff --git a/tablib/packages/openpyxl/tests/test_number_format.py b/tablib/packages/openpyxl/tests/test_number_format.py deleted file mode 100644 index 2f5c9da..0000000 --- a/tablib/packages/openpyxl/tests/test_number_format.py +++ /dev/null @@ -1,142 +0,0 @@ -# file openpyxl/tests/test_number_format.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -from datetime import datetime, date - -# 3rd party imports -from nose.tools import eq_, assert_almost_equal, assert_raises - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.worksheet import Worksheet -from openpyxl.cell import Cell -from openpyxl.style import NumberFormat -from openpyxl.shared.date_time import SharedDate - - -class TestNumberFormat(object): - - @classmethod - def setup_class(cls): - cls.workbook = Workbook() - cls.worksheet = Worksheet(cls.workbook, 'Test') - cls.sd = SharedDate() - - def test_convert_date_to_julian(self): - eq_(40167, self.sd.to_julian(2009, 12, 20)) - - def test_convert_date_from_julian(self): - - def test_date_equal(julian, datetime): - - eq_(self.sd.from_julian(julian), datetime) - - date_pairs= ( - (40167, datetime(2009, 12, 20)), - (21980, datetime(1960, 03, 05)), - ) - - for count, dt in date_pairs: - yield test_date_equal, count, dt - - def test_convert_datetime_to_julian(self): - eq_(40167, self.sd.datetime_to_julian(datetime(2009, 12, 20))) - - def test_insert_float(self): - self.worksheet.cell('A1').value = 3.14 - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_insert_percentage(self): - self.worksheet.cell('A1').value = '3.14%' - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - assert_almost_equal(0.0314, self.worksheet.cell('A1').value) - - def test_insert_datetime(self): - self.worksheet.cell('A1').value = date.today() - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_insert_date(self): - self.worksheet.cell('A1').value = datetime.now() - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_internal_date(self): - dt = datetime(2010, 7, 13, 6, 37, 41) - self.worksheet.cell('A3').value = dt - eq_(40372.27616898148, self.worksheet.cell('A3')._value) - - def test_datetime_interpretation(self): - dt = datetime(2010, 7, 13, 6, 37, 41) - self.worksheet.cell('A3').value = dt - eq_(dt, self.worksheet.cell('A3').value) - - def test_date_interpretation(self): - dt = date(2010, 7, 13) - self.worksheet.cell('A3').value = dt - eq_(datetime(2010, 7, 13, 0, 0), self.worksheet.cell('A3').value) - - def test_number_format_style(self): - self.worksheet.cell('A1').value = '12.6%' - eq_(NumberFormat.FORMAT_PERCENTAGE, \ - self.worksheet.cell('A1').style.number_format.format_code) - - def test_date_format_on_non_date(self): - cell = self.worksheet.cell('A1') - - def check_date_pair(count, date_string): - cell.value = datetime.strptime(date_string, '%Y-%m-%d') - eq_(count, cell._value) - - date_pairs = ( - (15, '1900-01-15'), - (59, '1900-02-28'), - (61, '1900-03-01'), - (367, '1901-01-01'), - (2958465, '9999-12-31'), ) - for count, date_string in date_pairs: - yield check_date_pair, count, date_string - - def test_1900_leap_year(self): - assert_raises(ValueError, self.sd.from_julian, 60) - assert_raises(ValueError, self.sd.to_julian, 1900, 2, 29) - - def test_bad_date(self): - - def check_bad_date(year, month, day): - assert_raises(ValueError, self.sd.to_julian, year, month, day) - - bad_dates = ((1776, 07, 04), (1899, 12, 31), ) - for year, month, day in bad_dates: - yield check_bad_date, year, month, day - - def test_bad_julian_date(self): - assert_raises(ValueError, self.sd.from_julian, -1) - - def test_mac_date(self): - self.sd.excel_base_date = self.sd.CALENDAR_MAC_1904 - assert_raises(NotImplementedError, self.sd.to_julian, 2000, 1, 1) - assert_raises(NotImplementedError, self.sd.from_julian, 1) - self.sd.excel_base_date = self.sd.CALENDAR_WINDOWS_1900 diff --git a/tablib/packages/openpyxl/tests/test_password_hash.py b/tablib/packages/openpyxl/tests/test_password_hash.py deleted file mode 100644 index fd2fddf..0000000 --- a/tablib/packages/openpyxl/tests/test_password_hash.py +++ /dev/null @@ -1,41 +0,0 @@ -# file openpyxl/tests/test_password_hash.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.shared.password_hasher import hash_password -from openpyxl.worksheet import SheetProtection - - -def test_hasher(): - eq_('CBEB', hash_password('test')) - - -def test_sheet_protection(): - protection = SheetProtection() - protection.password = 'test' - eq_('CBEB', protection.password) diff --git a/tablib/packages/openpyxl/tests/test_props.py b/tablib/packages/openpyxl/tests/test_props.py deleted file mode 100644 index fb9c5d0..0000000 --- a/tablib/packages/openpyxl/tests/test_props.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding=utf-8 -# file openpyxl/tests/test_props.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -from zipfile import ZipFile, ZIP_DEFLATED -from datetime import datetime -import os.path - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.tests.helper import DATADIR, TMPDIR, make_tmpdir, clean_tmpdir, \ - assert_equals_file_content -from openpyxl.reader.workbook import read_properties_core, \ - read_sheets_titles, get_number_of_parts -from openpyxl.writer.workbook import write_properties_core, \ - write_properties_app -from openpyxl.shared.ooxml import ARC_APP, ARC_CORE -from openpyxl.workbook import DocumentProperties, Workbook - - -class TestReaderProps(object): - - @classmethod - def setup_class(cls): - cls.genuine_filename = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - cls.archive = ZipFile(cls.genuine_filename, 'r', ZIP_DEFLATED) - - @classmethod - def teardown_class(cls): - cls.archive.close() - - def test_read_properties_core(self): - content = self.archive.read(ARC_CORE) - prop = read_properties_core(content) - eq_(prop.creator, '*.*') - eq_(prop.last_modified_by, u'Aurélien Campéas') - eq_(prop.created, datetime(2010, 4, 9, 20, 43, 12)) - eq_(prop.modified, datetime(2011, 2, 9, 13, 49, 32)) - - def test_read_sheets_titles(self): - content = self.archive.read(ARC_APP) - sheet_titles = read_sheets_titles(content) - eq_(sheet_titles, \ - ['Sheet1 - Text', 'Sheet2 - Numbers', 'Sheet3 - Formulas', 'Sheet4 - Dates']) - - -class TestReaderPropsMixed(object): - - @classmethod - def setup_class(cls): - reference_filename = \ - os.path.join(DATADIR, 'reader', 'app-multi-titles.xml') - with open(reference_filename) as handle: - cls.content = handle.read() - - def test_read_sheet_titles_mixed(self): - sheet_titles = read_sheets_titles(self.content) - eq_(sheet_titles, - ['ToC', 'ContractYear', 'ContractTier', 'Demand', - 'LinearizedFunction', 'Market', 'Transmission']) - - def test_number_of_parts(self): - parts_number = get_number_of_parts(self.content) - eq_(parts_number, - ({'Worksheets': 7, 'Named Ranges': 7}, - ['Worksheets', 'Named Ranges'])) - - -class TestWriteProps(object): - - @classmethod - def setup_class(cls): - make_tmpdir() - cls.tmp_filename = os.path.join(TMPDIR, 'test.xlsx') - cls.prop = DocumentProperties() - - @classmethod - def teardown_class(cls): - clean_tmpdir() - - def test_write_properties_core(self): - self.prop.creator = 'TEST_USER' - self.prop.last_modified_by = 'SOMEBODY' - self.prop.created = datetime(2010, 4, 1, 20, 30, 00) - self.prop.modified = datetime(2010, 4, 5, 14, 5, 30) - content = write_properties_core(self.prop) - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'core.xml'), - content) - - def test_write_properties_app(self): - wb = Workbook() - wb.create_sheet() - wb.create_sheet() - content = write_properties_app(wb) - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'app.xml'), - content) diff --git a/tablib/packages/openpyxl/tests/test_read.py b/tablib/packages/openpyxl/tests/test_read.py deleted file mode 100644 index eb6ab07..0000000 --- a/tablib/packages/openpyxl/tests/test_read.py +++ /dev/null @@ -1,134 +0,0 @@ -# file openpyxl/tests/test_read.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os.path - -# 3rd party imports -from nose.tools import eq_, raises - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.worksheet import Worksheet -from openpyxl.workbook import Workbook -from openpyxl.style import NumberFormat, Style -from openpyxl.reader.worksheet import read_worksheet, read_dimension -from openpyxl.reader.excel import load_workbook -from openpyxl.shared.exc import InvalidFileException - - -def test_read_standalone_worksheet(): - - class DummyWb(object): - - def get_sheet_by_name(self, value): - return None - - path = os.path.join(DATADIR, 'reader', 'sheet2.xml') - with open(path) as handle: - ws = read_worksheet(handle.read(), DummyWb(), - 'Sheet 2', {1: 'hello'}, {1: Style()}) - assert isinstance(ws, Worksheet) - eq_(ws.cell('G5').value, 'hello') - eq_(ws.cell('D30').value, 30) - eq_(ws.cell('K9').value, 0.09) - - -def test_read_standard_workbook(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - wb = load_workbook(path) - assert isinstance(wb, Workbook) - -def test_read_standard_workbook_from_fileobj(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - fo = open(path, mode = 'rb') - wb = load_workbook(fo) - assert isinstance(wb, Workbook) - -def test_read_worksheet(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - wb = load_workbook(path) - sheet2 = wb.get_sheet_by_name('Sheet2 - Numbers') - assert isinstance(sheet2, Worksheet) - eq_('This is cell G5', sheet2.cell('G5').value) - eq_(18, sheet2.cell('D18').value) - - -def test_read_nostring_workbook(): - genuine_wb = os.path.join(DATADIR, 'genuine', 'empty-no-string.xlsx') - wb = load_workbook(genuine_wb) - assert isinstance(wb, Workbook) - -@raises(InvalidFileException) -def test_read_empty_file(): - - null_file = os.path.join(DATADIR, 'reader', 'null_file.xlsx') - wb = load_workbook(null_file) - -@raises(InvalidFileException) -def test_read_empty_archive(): - - null_file = os.path.join(DATADIR, 'reader', 'null_archive.xlsx') - wb = load_workbook(null_file) - -def test_read_dimension(): - - path = os.path.join(DATADIR, 'reader', 'sheet2.xml') - - with open(path) as handle: - - dimension = read_dimension(xml_source = handle.read()) - - eq_(('D', 1, 'K', 30), dimension) - -class TestReadWorkbookWithStyles(object): - - @classmethod - def setup_class(cls): - cls.genuine_wb = os.path.join(DATADIR, 'genuine', \ - 'empty-with-styles.xlsx') - wb = load_workbook(cls.genuine_wb) - cls.ws = wb.get_sheet_by_name('Sheet1') - - def test_read_general_style(self): - eq_(self.ws.cell('A1').style.number_format.format_code, - NumberFormat.FORMAT_GENERAL) - - def test_read_date_style(self): - eq_(self.ws.cell('A2').style.number_format.format_code, - NumberFormat.FORMAT_DATE_XLSX14) - - def test_read_number_style(self): - eq_(self.ws.cell('A3').style.number_format.format_code, - NumberFormat.FORMAT_NUMBER_00) - - def test_read_time_style(self): - eq_(self.ws.cell('A4').style.number_format.format_code, - NumberFormat.FORMAT_DATE_TIME3) - - def test_read_percentage_style(self): - eq_(self.ws.cell('A5').style.number_format.format_code, - NumberFormat.FORMAT_PERCENTAGE_00) diff --git a/tablib/packages/openpyxl/tests/test_strings.py b/tablib/packages/openpyxl/tests/test_strings.py deleted file mode 100644 index bf3cc57..0000000 --- a/tablib/packages/openpyxl/tests/test_strings.py +++ /dev/null @@ -1,68 +0,0 @@ -# file openpyxl/tests/test_strings.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os.path - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.workbook import Workbook -from openpyxl.writer.strings import create_string_table -from openpyxl.reader.strings import read_string_table - - -def test_create_string_table(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('B12').value = 'hello' - ws.cell('B13').value = 'world' - ws.cell('D28').value = 'hello' - table = create_string_table(wb) - eq_({'hello': 1, 'world': 0}, table) - - -def test_read_string_table(): - with open(os.path.join(DATADIR, 'reader', 'sharedStrings.xml')) as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'This is cell A1 in Sheet 1', 1: 'This is cell G5'}, string_table) - -def test_empty_string(): - with open(os.path.join(DATADIR, 'reader', 'sharedStrings-emptystring.xml')) as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'Testing empty cell', 1:''}, string_table) - -def test_formatted_string_table(): - with open(os.path.join(DATADIR, 'reader', 'shared-strings-rich.xml')) \ - as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'Welcome', 1: 'to the best shop in town', - 2: " let's play "}, string_table) diff --git a/tablib/packages/openpyxl/tests/test_style.py b/tablib/packages/openpyxl/tests/test_style.py deleted file mode 100644 index ee51123..0000000 --- a/tablib/packages/openpyxl/tests/test_style.py +++ /dev/null @@ -1,181 +0,0 @@ -# file openpyxl/tests/test_style.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -import os.path -import datetime - -# 3rd party imports -from nose.tools import eq_, assert_false, ok_ - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content, get_xml -from openpyxl.reader.style import read_style_table -from openpyxl.workbook import Workbook -from openpyxl.style import NumberFormat -from openpyxl.writer.styles import StyleWriter -from openpyxl.style import NumberFormat, Border, Color - - -class TestCreateStyle(object): - - @classmethod - def setup_class(cls): - now = datetime.datetime.now() - cls.workbook = Workbook() - cls.worksheet = cls.workbook.create_sheet() - cls.worksheet.cell(coordinate = 'A1').value = '12.34%' - cls.worksheet.cell(coordinate = 'B4').value = now - cls.worksheet.cell(coordinate = 'B5').value = now - cls.worksheet.cell(coordinate = 'C14').value = u'This is a test' - cls.worksheet.cell(coordinate = 'D9').value = '31.31415' - cls.worksheet.cell(coordinate = 'D9').style.number_format.format_code = \ - NumberFormat.FORMAT_NUMBER_00 - cls.writer = StyleWriter(cls.workbook) - - def test_create_style_table(self): - eq_(3, len(self.writer.style_table)) - - def test_write_style_table(self): - reference_file = os.path.join(DATADIR, 'writer', 'expected', 'simple-styles.xml') - assert_equals_file_content(reference_file, self.writer.write_table()) - -class TestStyleWriter(object): - - def setUp(self): - - self.workbook = Workbook() - self.worksheet = self.workbook.create_sheet() - - def test_no_style(self): - - w = StyleWriter(self.workbook) - eq_(0, len(w.style_table)) - - def test_nb_style(self): - - for i in range(1, 6): - self.worksheet.cell(row=1, column=i).style.font.size += i - w = StyleWriter(self.workbook) - eq_(5, len(w.style_table)) - - self.worksheet.cell('A10').style.borders.top = Border.BORDER_THIN - w = StyleWriter(self.workbook) - eq_(6, len(w.style_table)) - - def test_style_unicity(self): - - for i in range(1, 6): - self.worksheet.cell(row=1, column=i).style.font.bold = True - w = StyleWriter(self.workbook) - eq_(1, len(w.style_table)) - - def test_fonts(self): - - self.worksheet.cell('A1').style.font.size = 12 - self.worksheet.cell('A1').style.font.bold = True - w = StyleWriter(self.workbook) - w._write_fonts() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fonts count="2"><font><sz val="11" /><color theme="1" /><name val="Calibri" /><family val="2" /><scheme val="minor" /></font><font><sz val="12" /><color rgb="FF000000" /><name val="Calibri" /><family val="2" /><scheme val="minor" /><b /></font></fonts></styleSheet>') - - def test_fills(self): - - self.worksheet.cell('A1').style.fill.fill_type = 'solid' - self.worksheet.cell('A1').style.fill.start_color.index = Color.DARKYELLOW - w = StyleWriter(self.workbook) - w._write_fills() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fills count="3"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="gray125" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FF808000" /></patternFill></fill></fills></styleSheet>') - - def test_borders(self): - - self.worksheet.cell('A1').style.borders.top.border_style = Border.BORDER_THIN - self.worksheet.cell('A1').style.borders.top.color.index = Color.DARKYELLOW - w = StyleWriter(self.workbook) - w._write_borders() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border><left style="none"><color rgb="FF000000" /></left><right style="none"><color rgb="FF000000" /></right><top style="thin"><color rgb="FF808000" /></top><bottom style="none"><color rgb="FF000000" /></bottom><diagonal style="none"><color rgb="FF000000" /></diagonal></border></borders></styleSheet>') - - def test_write_cell_xfs_1(self): - - self.worksheet.cell('A1').style.font.size = 12 - w = StyleWriter(self.workbook) - ft = w._write_fonts() - nft = w._write_number_formats() - w._write_cell_xfs(nft, ft, {}, {}) - xml = get_xml(w._root) - ok_('applyFont="1"' in xml) - ok_('applyFillId="1"' not in xml) - ok_('applyBorder="1"' not in xml) - ok_('applyAlignment="1"' not in xml) - - def test_alignment(self): - self.worksheet.cell('A1').style.alignment.horizontal = 'center' - self.worksheet.cell('A1').style.alignment.vertical = 'center' - w = StyleWriter(self.workbook) - nft = w._write_number_formats() - w._write_cell_xfs(nft,{},{},{}) - xml = get_xml(w._root) - ok_('applyAlignment="1"' in xml) - ok_('horizontal="center"' in xml) - ok_('vertical="center"' in xml) - - -#def test_format_comparisions(): -# format1 = NumberFormat() -# format2 = NumberFormat() -# format3 = NumberFormat() -# format1.format_code = 'm/d/yyyy' -# format2.format_code = 'm/d/yyyy' -# format3.format_code = 'mm/dd/yyyy' -# assert not format1 < format2 -# assert format1 < format3 -# assert format1 == format2 -# assert format1 != format3 - - -def test_builtin_format(): - format = NumberFormat() - format.format_code = '0.00' - eq_(format.builtin_format_code(2), format._format_code) - - -def test_read_style(): - reference_file = os.path.join(DATADIR, 'reader', 'simple-styles.xml') - with open(reference_file, 'r') as handle: - content = handle.read() - style_table = read_style_table(content) - eq_(4, len(style_table)) - eq_(NumberFormat._BUILTIN_FORMATS[9], - style_table[1].number_format.format_code) - eq_('yyyy-mm-dd', style_table[2].number_format.format_code) - - -def test_read_cell_style(): - reference_file = os.path.join( - DATADIR, 'reader', 'empty-workbook-styles.xml') - with open(reference_file, 'r') as handle: - content = handle.read() - style_table = read_style_table(content) - eq_(2, len(style_table)) diff --git a/tablib/packages/openpyxl/tests/test_theme.py b/tablib/packages/openpyxl/tests/test_theme.py deleted file mode 100644 index b0f6f00..0000000 --- a/tablib/packages/openpyxl/tests/test_theme.py +++ /dev/null @@ -1,37 +0,0 @@ -# file openpyxl/tests/test_theme.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -import os.path - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content -from openpyxl.writer.theme import write_theme - - -def test_write_theme(): - content = write_theme() - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'theme1.xml'), content) diff --git a/tablib/packages/openpyxl/tests/test_workbook.py b/tablib/packages/openpyxl/tests/test_workbook.py deleted file mode 100644 index 20191d2..0000000 --- a/tablib/packages/openpyxl/tests/test_workbook.py +++ /dev/null @@ -1,148 +0,0 @@ -# file openpyxl/tests/test_workbook.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_, with_setup, raises -import os.path as osp - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.reader.excel import load_workbook -from openpyxl.namedrange import NamedRange -from openpyxl.shared.exc import ReadOnlyWorkbookException -from openpyxl.tests.helper import TMPDIR, clean_tmpdir, make_tmpdir - -import datetime - -def test_get_active_sheet(): - wb = Workbook() - active_sheet = wb.get_active_sheet() - eq_(active_sheet, wb.worksheets[0]) - - -def test_create_sheet(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - eq_(new_sheet, wb.worksheets[0]) - - -@raises(ReadOnlyWorkbookException) -def test_create_sheet_readonly(): - wb = Workbook() - wb._set_optimized_read() - wb.create_sheet() - - -def test_remove_sheet(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - wb.remove_sheet(new_sheet) - assert new_sheet not in wb.worksheets - - -def test_get_sheet_by_name(): - wb = Workbook() - new_sheet = wb.create_sheet() - title = 'my sheet' - new_sheet.title = title - found_sheet = wb.get_sheet_by_name(title) - eq_(new_sheet, found_sheet) - - -def test_get_index(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - sheet_index = wb.get_index(new_sheet) - eq_(sheet_index, 0) - - -def test_get_sheet_names(): - wb = Workbook() - names = ['Sheet', 'Sheet1', 'Sheet2', 'Sheet3', 'Sheet4', 'Sheet5'] - for count in range(5): - wb.create_sheet(0) - actual_names = wb.get_sheet_names() - eq_(sorted(actual_names), sorted(names)) - - -def test_get_named_ranges(): - wb = Workbook() - eq_(wb.get_named_ranges(), wb._named_ranges) - - -def test_add_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - named_ranges_list = wb.get_named_ranges() - assert named_range in named_ranges_list - - -def test_get_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - found_named_range = wb.get_named_range('test_nr') - eq_(named_range, found_named_range) - - -def test_remove_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - wb.remove_named_range(named_range) - named_ranges_list = wb.get_named_ranges() - assert named_range not in named_ranges_list - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_add_local_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - named_range.local_only = True - wb.add_named_range(named_range) - dest_filename = osp.join(TMPDIR, 'local_named_range_book.xlsx') - wb.save(dest_filename) - - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_write_regular_date(): - - today = datetime.datetime(2010, 1, 18, 14, 15, 20, 1600) - - book = Workbook() - sheet = book.get_active_sheet() - sheet.cell("A1").value = today - dest_filename = osp.join(TMPDIR, 'date_read_write_issue.xlsx') - book.save(dest_filename) - - test_book = load_workbook(dest_filename) - test_sheet = test_book.get_active_sheet() - - eq_(test_sheet.cell("A1").value, today) - diff --git a/tablib/packages/openpyxl/tests/test_worksheet.py b/tablib/packages/openpyxl/tests/test_worksheet.py deleted file mode 100644 index 1894f1d..0000000 --- a/tablib/packages/openpyxl/tests/test_worksheet.py +++ /dev/null @@ -1,258 +0,0 @@ -# file openpyxl/tests/test_worksheet.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.worksheet import Worksheet, Relationship, flatten -from openpyxl.cell import Cell -from openpyxl.shared.exc import CellCoordinatesException, \ - SheetTitleException, InsufficientCoordinatesException, \ - NamedRangeException - - -class TestWorksheet(): - - @classmethod - def setup_class(cls): - cls.wb = Workbook() - - def test_new_worksheet(self): - ws = Worksheet(self.wb) - eq_(self.wb, ws._parent) - - def test_new_sheet_name(self): - self.wb.worksheets = [] - ws = Worksheet(self.wb, title = '') - eq_(repr(ws), '<Worksheet "Sheet1">') - - def test_get_cell(self): - ws = Worksheet(self.wb) - cell = ws.cell('A1') - eq_(cell.get_coordinate(), 'A1') - - @raises(SheetTitleException) - def test_set_bad_title(self): - Worksheet(self.wb, 'X' * 50) - - def test_set_bad_title_character(self): - assert_raises(SheetTitleException, Worksheet, self.wb, '[') - assert_raises(SheetTitleException, Worksheet, self.wb, ']') - assert_raises(SheetTitleException, Worksheet, self.wb, '*') - assert_raises(SheetTitleException, Worksheet, self.wb, ':') - assert_raises(SheetTitleException, Worksheet, self.wb, '?') - assert_raises(SheetTitleException, Worksheet, self.wb, '/') - assert_raises(SheetTitleException, Worksheet, self.wb, '\\') - - def test_worksheet_dimension(self): - ws = Worksheet(self.wb) - eq_('A1:A1', ws.calculate_dimension()) - ws.cell('B12').value = 'AAA' - eq_('A1:B12', ws.calculate_dimension()) - - def test_worksheet_range(self): - ws = Worksheet(self.wb) - xlrange = ws.range('A1:C4') - assert isinstance(xlrange, tuple) - eq_(4, len(xlrange)) - eq_(3, len(xlrange[0])) - - def test_worksheet_named_range(self): - ws = Worksheet(self.wb) - self.wb.create_named_range('test_range', ws, 'C5') - xlrange = ws.range('test_range') - assert isinstance(xlrange, Cell) - eq_(5, xlrange.row) - - @raises(NamedRangeException) - def test_bad_named_range(self): - ws = Worksheet(self.wb) - ws.range('bad_range') - - @raises(NamedRangeException) - def test_named_range_wrong_sheet(self): - ws1 = Worksheet(self.wb) - ws2 = Worksheet(self.wb) - self.wb.create_named_range('wrong_sheet_range', ws1, 'C5') - ws2.range('wrong_sheet_range') - - def test_cell_offset(self): - ws = Worksheet(self.wb) - eq_('C17', ws.cell('B15').offset(2, 1).get_coordinate()) - - def test_range_offset(self): - ws = Worksheet(self.wb) - xlrange = ws.range('A1:C4', 1, 3) - assert isinstance(xlrange, tuple) - eq_(4, len(xlrange)) - eq_(3, len(xlrange[0])) - eq_('D2', xlrange[0][0].get_coordinate()) - - def test_cell_alternate_coordinates(self): - ws = Worksheet(self.wb) - cell = ws.cell(row = 8, column = 4) - eq_('E9', cell.get_coordinate()) - - @raises(InsufficientCoordinatesException) - def test_cell_insufficient_coordinates(self): - ws = Worksheet(self.wb) - cell = ws.cell(row = 8) - - def test_cell_range_name(self): - ws = Worksheet(self.wb) - self.wb.create_named_range('test_range_single', ws, 'B12') - assert_raises(CellCoordinatesException, ws.cell, 'test_range_single') - c_range_name = ws.range('test_range_single') - c_range_coord = ws.range('B12') - c_cell = ws.cell('B12') - eq_(c_range_coord, c_range_name) - eq_(c_range_coord, c_cell) - - def test_garbage_collect(self): - ws = Worksheet(self.wb) - ws.cell('A1').value = '' - ws.cell('B2').value = '0' - ws.cell('C4').value = 0 - ws.garbage_collect() - eq_(ws.get_cell_collection(), [ws.cell('B2'), ws.cell('C4')]) - - def test_hyperlink_relationships(self): - ws = Worksheet(self.wb) - eq_(len(ws.relationships), 0) - - ws.cell('A1').hyperlink = "http://test.com" - eq_(len(ws.relationships), 1) - eq_("rId1", ws.cell('A1').hyperlink_rel_id) - eq_("rId1", ws.relationships[0].id) - eq_("http://test.com", ws.relationships[0].target) - eq_("External", ws.relationships[0].target_mode) - - ws.cell('A2').hyperlink = "http://test2.com" - eq_(len(ws.relationships), 2) - eq_("rId2", ws.cell('A2').hyperlink_rel_id) - eq_("rId2", ws.relationships[1].id) - eq_("http://test2.com", ws.relationships[1].target) - eq_("External", ws.relationships[1].target_mode) - - @raises(ValueError) - def test_bad_relationship_type(self): - rel = Relationship('bad_type') - - def test_append_list(self): - ws = Worksheet(self.wb) - - ws.append(['This is A1', 'This is B1']) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is B1', ws.cell('B1').value) - - def test_append_dict_letter(self): - ws = Worksheet(self.wb) - - ws.append({'A' : 'This is A1', 'C' : 'This is C1'}) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is C1', ws.cell('C1').value) - - def test_append_dict_index(self): - ws = Worksheet(self.wb) - - ws.append({0 : 'This is A1', 2 : 'This is C1'}) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is C1', ws.cell('C1').value) - - @raises(TypeError) - def test_bad_append(self): - ws = Worksheet(self.wb) - ws.append("test") - - def test_append_2d_list(self): - - ws = Worksheet(self.wb) - - ws.append(['This is A1', 'This is B1']) - ws.append(['This is A2', 'This is B2']) - - vals = ws.range('A1:B2') - - eq_((('This is A1', 'This is B1'), - ('This is A2', 'This is B2'),), flatten(vals)) - - def test_rows(self): - - ws = Worksheet(self.wb) - - ws.cell('A1').value = 'first' - ws.cell('C9').value = 'last' - - rows = ws.rows - - eq_(len(rows), 9) - - eq_(rows[0][0].value, 'first') - eq_(rows[-1][-1].value, 'last') - - def test_cols(self): - - ws = Worksheet(self.wb) - - ws.cell('A1').value = 'first' - ws.cell('C9').value = 'last' - - cols = ws.columns - - eq_(len(cols), 3) - - eq_(cols[0][0].value, 'first') - eq_(cols[-1][-1].value, 'last') - - def test_auto_filter(self): - ws = Worksheet(self.wb) - ws.auto_filter = ws.range('a1:f1') - assert ws.auto_filter == 'A1:F1' - - ws.auto_filter = '' - assert ws.auto_filter is None - - ws.auto_filter = 'c1:g9' - assert ws.auto_filter == 'C1:G9' - - def test_freeze(self): - ws = Worksheet(self.wb) - ws.freeze_panes = ws.cell('b2') - assert ws.freeze_panes == 'B2' - - ws.freeze_panes = '' - assert ws.freeze_panes is None - - ws.freeze_panes = 'c5' - assert ws.freeze_panes == 'C5' - - ws.freeze_panes = ws.cell('A1') - assert ws.freeze_panes is None - diff --git a/tablib/packages/openpyxl/tests/test_write.py b/tablib/packages/openpyxl/tests/test_write.py deleted file mode 100644 index 834e73c..0000000 --- a/tablib/packages/openpyxl/tests/test_write.py +++ /dev/null @@ -1,203 +0,0 @@ -# file openpyxl/tests/test_write.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from __future__ import with_statement -from StringIO import StringIO -import os.path - -# 3rd party imports -from nose.tools import eq_, with_setup, raises - -# package imports -from openpyxl.tests.helper import TMPDIR, DATADIR, \ - assert_equals_file_content, clean_tmpdir, make_tmpdir -from openpyxl.workbook import Workbook -from openpyxl.reader.excel import load_workbook -from openpyxl.writer.excel import save_workbook, save_virtual_workbook, \ - ExcelWriter -from openpyxl.writer.workbook import write_workbook, write_workbook_rels -from openpyxl.writer.worksheet import write_worksheet, write_worksheet_rels -from openpyxl.writer.strings import write_string_table -from openpyxl.writer.styles import StyleWriter - - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_write_empty_workbook(): - wb = Workbook() - dest_filename = os.path.join(TMPDIR, 'empty_book.xlsx') - save_workbook(wb, dest_filename) - assert os.path.isfile(dest_filename) - - -def test_write_virtual_workbook(): - old_wb = Workbook() - saved_wb = save_virtual_workbook(old_wb) - new_wb = load_workbook(StringIO(saved_wb)) - assert new_wb - - -def test_write_workbook_rels(): - wb = Workbook() - content = write_workbook_rels(wb) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'workbook.xml.rels'), content) - - -def test_write_workbook(): - wb = Workbook() - content = write_workbook(wb) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'workbook.xml'), content) - - -def test_write_string_table(): - table = {'hello': 1, 'world': 2, 'nice': 3} - content = write_string_table(table) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sharedStrings.xml'), content) - - -def test_write_worksheet(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1.xml'), content) - - -def test_write_hidden_worksheet(): - wb = Workbook() - ws = wb.create_sheet() - ws.sheet_state = ws.SHEETSTATE_HIDDEN - ws.cell('F42').value = 'hello' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1.xml'), content) - - -def test_write_formula(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = 10 - ws.cell('F2').value = 32 - ws.cell('F3').value = '=F1+F2' - content = write_worksheet(ws, {}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_formula.xml'), content) - - -def test_write_style(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = '13%' - style_id_by_hash = StyleWriter(wb).get_style_by_hash() - content = write_worksheet(ws, {}, style_id_by_hash) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_style.xml'), content) - - -def test_write_height(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = 10 - ws.row_dimensions[ws.cell('F1').row].height = 30 - content = write_worksheet(ws, {}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_height.xml'), content) - - -def test_write_hyperlink(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('A1').value = "test" - ws.cell('A1').hyperlink = "http://test.com" - content = write_worksheet(ws, {'test': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_hyperlink.xml'), content) - - -def test_write_hyperlink_rels(): - wb = Workbook() - ws = wb.create_sheet() - eq_(0, len(ws.relationships)) - ws.cell('A1').value = "test" - ws.cell('A1').hyperlink = "http://test.com/" - eq_(1, len(ws.relationships)) - ws.cell('A2').value = "test" - ws.cell('A2').hyperlink = "http://test2.com/" - eq_(2, len(ws.relationships)) - content = write_worksheet_rels(ws, 1) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_hyperlink.xml.rels'), content) - - -def test_hyperlink_value(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('A1').hyperlink = "http://test.com" - eq_("http://test.com", ws.cell('A1').value) - ws.cell('A1').value = "test" - eq_("test", ws.cell('A1').value) - -def test_write_auto_filter(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.auto_filter = 'A1:F1' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_auto_filter.xml'), content) - -def test_freeze_panes_horiz(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'A4' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_horiz.xml'), content) - -def test_freeze_panes_vert(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'D1' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_vert.xml'), content) - pass - -def test_freeze_panes_both(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'D4' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_both.xml'), content) - - diff --git a/tablib/packages/openpyxl3/tests/__init__.py b/tablib/packages/openpyxl3/tests/__init__.py deleted file mode 100644 index de89032..0000000 --- a/tablib/packages/openpyxl3/tests/__init__.py +++ /dev/null @@ -1,24 +0,0 @@ -# file openpyxl/tests/__init__.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni diff --git a/tablib/packages/openpyxl3/tests/helper.py b/tablib/packages/openpyxl3/tests/helper.py deleted file mode 100644 index 9dfbfaf..0000000 --- a/tablib/packages/openpyxl3/tests/helper.py +++ /dev/null @@ -1,94 +0,0 @@ -# file openpyxl/tests/helper.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os -import os.path -import shutil -import difflib -from io import StringIO -from pprint import pprint -from tempfile import gettempdir - -# package imports -from openpyxl.shared.xmltools import fromstring, ElementTree -from openpyxl.shared.xmltools import pretty_indent - -# constants -DATADIR = os.path.abspath(os.path.join(os.path.dirname(__file__), 'test_data')) -TMPDIR = os.path.join(gettempdir(), 'openpyxl_test_temp') - - -def make_tmpdir(): - try: - os.makedirs(TMPDIR) - except OSError: - pass - - -def clean_tmpdir(): - if os.path.isdir(TMPDIR): - shutil.rmtree(TMPDIR, ignore_errors = True) - - -def assert_equals_file_content(reference_file, fixture, filetype = 'xml'): - if os.path.isfile(fixture): - with open(fixture) as fixture_file: - fixture_content = fixture_file.read() - else: - fixture_content = fixture - - with open(reference_file) as expected_file: - expected_content = expected_file.read() - - if filetype == 'xml': - fixture_content = fromstring(fixture_content) - pretty_indent(fixture_content) - temp = StringIO() - ElementTree(fixture_content).write(temp) - fixture_content = temp.getvalue() - - expected_content = fromstring(expected_content) - pretty_indent(expected_content) - temp = StringIO() - ElementTree(expected_content).write(temp) - expected_content = temp.getvalue() - - fixture_lines = fixture_content.split('\n') - expected_lines = expected_content.split('\n') - differences = list(difflib.unified_diff(expected_lines, fixture_lines)) - if differences: - temp = StringIO() - pprint(differences, stream = temp) - assert False, 'Differences found : %s' % temp.getvalue() - -def get_xml(xml_node): - - io = StringIO() - ElementTree(xml_node).write(io, encoding = 'UTF-8') - ret = io.getvalue() - io.close() - return ret.replace('\n', '') diff --git a/tablib/packages/openpyxl3/tests/test_cell.py b/tablib/packages/openpyxl3/tests/test_cell.py deleted file mode 100644 index 07f0b6f..0000000 --- a/tablib/packages/openpyxl3/tests/test_cell.py +++ /dev/null @@ -1,200 +0,0 @@ -# file openpyxl/tests/test_cell.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from datetime import time, datetime - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -# package imports -from openpyxl.worksheet import Worksheet -from openpyxl.workbook import Workbook -from openpyxl.shared.exc import ColumnStringIndexException, \ - CellCoordinatesException, DataTypeException -from openpyxl.cell import column_index_from_string, \ - coordinate_from_string, get_column_letter, Cell, absolute_coordinate - - -def test_coordinates(): - column, row = coordinate_from_string('ZF46') - eq_("ZF", column) - eq_(46, row) - - -@raises(CellCoordinatesException) -def test_invalid_coordinate(): - coordinate_from_string('AAA') - - -def test_absolute(): - eq_('$ZF$51', absolute_coordinate('ZF51')) - -def test_absolute_multiple(): - - eq_('$ZF$51:$ZF$53', absolute_coordinate('ZF51:ZF$53')) - - -def test_column_index(): - eq_(10, column_index_from_string('J')) - eq_(270, column_index_from_string('jJ')) - eq_(7030, column_index_from_string('jjj')) - - -def test_bad_column_index(): - - @raises(ColumnStringIndexException) - def _check(bad_string): - column_index_from_string(bad_string) - - bad_strings = ('JJJJ', '', '$', '1',) - for bad_string in bad_strings: - yield _check, bad_string - - -def test_column_letter_boundries(): - assert_raises(ColumnStringIndexException, get_column_letter, 0) - assert_raises(ColumnStringIndexException, get_column_letter, 18279) - - -def test_column_letter(): - eq_('ZZZ', get_column_letter(18278)) - eq_('JJJ', get_column_letter(7030)) - eq_('AB', get_column_letter(28)) - eq_('AA', get_column_letter(27)) - eq_('Z', get_column_letter(26)) - - -def test_initial_value(): - cell = Cell(None, 'A', 1, value = '17.5') - eq_(cell.TYPE_NUMERIC, cell.data_type) - - -class TestCellValueTypes(): - - @classmethod - def setup_class(cls): - cls.cell = Cell(None, 'A', 1) - - def test_1st(self): - eq_(self.cell.TYPE_NULL, self.cell.data_type) - - def test_null(self): - self.cell.value = None - eq_(self.cell.TYPE_NULL, self.cell.data_type) - - def test_numeric(self): - - def check_numeric(value): - self.cell.value = value - eq_(self.cell.TYPE_NUMERIC, self.cell.data_type) - - values = (42, '4.2', '-42.000', '0', 0, 0.0001, '0.9999', '99E-02') - for value in values: - yield check_numeric, value - - def test_string(self): - self.cell.value = 'hello' - eq_(self.cell.TYPE_STRING, self.cell.data_type) - - def test_formula(self): - self.cell.value = '=42' - eq_(self.cell.TYPE_FORMULA, self.cell.data_type) - - def test_boolean(self): - self.cell.value = True - eq_(self.cell.TYPE_BOOL, self.cell.data_type) - self.cell.value = False - eq_(self.cell.TYPE_BOOL, self.cell.data_type) - - def test_error_codes(self): - - def check_error(): - eq_(self.cell.TYPE_ERROR, self.cell.data_type) - - for error_string in list(self.cell.ERROR_CODES.keys()): - self.cell.value = error_string - yield check_error - - -def test_data_type_check(): - cell = Cell(None, 'A', 1) - cell.bind_value(None) - eq_(Cell.TYPE_NULL, cell._data_type) - - cell.bind_value('.0e000') - eq_(Cell.TYPE_NUMERIC, cell._data_type) - - cell.bind_value('-0.e-0') - eq_(Cell.TYPE_NUMERIC, cell._data_type) - - cell.bind_value('1E') - eq_(Cell.TYPE_STRING, cell._data_type) - -@raises(DataTypeException) -def test_set_bad_type(): - cell = Cell(None, 'A', 1) - cell.set_value_explicit(1, 'q') - - -def test_time(): - - def check_time(raw_value, coerced_value): - cell.value = raw_value - eq_(cell.value, coerced_value) - eq_(cell.TYPE_NUMERIC, cell.data_type) - - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - values = (('03:40:16', time(3, 40, 16)), ('03:40', time(3, 40)),) - for raw_value, coerced_value in values: - yield check_time, raw_value, coerced_value - - -def test_date_format_on_non_date(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - cell.value = datetime.now() - cell.value = 'testme' - eq_('testme', cell.value) - - -def test_repr(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - eq_(repr(cell), '<Cell Sheet1.A1>', 'Got bad repr: %s' % repr(cell)) - -def test_is_date(): - wb = Workbook() - ws = Worksheet(wb) - cell = Cell(ws, 'A', 1) - cell.value = datetime.now() - eq_(cell.is_date(), True) - cell.value = 'testme' - eq_('testme', cell.value) - eq_(cell.is_date(), False) diff --git a/tablib/packages/openpyxl3/tests/test_chart.py b/tablib/packages/openpyxl3/tests/test_chart.py deleted file mode 100644 index 09a7bbc..0000000 --- a/tablib/packages/openpyxl3/tests/test_chart.py +++ /dev/null @@ -1,131 +0,0 @@ -# file openpyxl/tests/test_chart.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -from nose.tools import eq_ - -from openpyxl.tests.helper import get_xml -from openpyxl.shared.xmltools import Element -from openpyxl.writer.charts import ChartWriter -from openpyxl.workbook import Workbook -from openpyxl.chart import BarChart, ScatterChart, Serie, Reference -from openpyxl.style import Color - -class TestChartWriter(object): - - def setUp(self): - - wb = Workbook() - ws = wb.get_active_sheet() - ws.title = 'data' - for i in range(10): - ws.cell(row = i, column = 0).value = i - self.chart = BarChart() - self.chart.title = 'TITLE' - self.chart.add_serie(Serie(Reference(ws, (0, 0), (10, 0)))) - self.chart._series[-1].color = Color.GREEN - self.cw = ChartWriter(self.chart) - self.root = Element('test') - - def test_write_title(self): - self.cw._write_title(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title></test>') - - def test_write_xaxis(self): - - self.cw._write_axis(self.root, self.chart.x_axis, 'c:catAx') - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx></test>') - - def test_write_yaxis(self): - - self.cw._write_axis(self.root, self.chart.y_axis, 'c:valAx') - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></test>') - - def test_write_series(self): - - self.cw._write_series(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser></test>') - - def test_write_legend(self): - - self.cw._write_legend(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>') - - def test_write_print_settings(self): - - self.cw._write_print_settings(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:printSettings><c:headerFooter /><c:pageMargins b="0.75" footer="0.3" header="0.3" l="0.7" r="0.7" t="0.75" /><c:pageSetup /></c:printSettings></test>') - - def test_write_chart(self): - - self.cw._write_chart(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:chart><c:title><c:tx><c:rich><a:bodyPr /><a:lstStyle /><a:p><a:pPr><a:defRPr /></a:pPr><a:r><a:rPr lang="fr-FR" /><a:t>TITLE</a:t></a:r></a:p></c:rich></c:tx><c:layout /></c:title><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="1.28571428571" /><c:y val="0.2125" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:barChart><c:barDir val="col" /><c:grouping val="clustered" /><c:ser><c:idx val="0" /><c:order val="0" /><c:spPr><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill><a:ln><a:solidFill><a:srgbClr val="00FF00" /></a:solidFill></a:ln></c:spPr><c:marker><c:symbol val="none" /></c:marker><c:val><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:val></c:ser><c:marker val="1" /><c:axId val="60871424" /><c:axId val="60873344" /></c:barChart><c:catAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /></c:scaling><c:axPos val="b" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /></c:catAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="between" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></test>') - - -class TestScatterChartWriter(object): - - def setUp(self): - - wb = Workbook() - ws = wb.get_active_sheet() - ws.title = 'data' - for i in range(10): - ws.cell(row = i, column = 0).value = i - ws.cell(row = i, column = 1).value = i - self.scatterchart = ScatterChart() - self.scatterchart.add_serie(Serie(Reference(ws, (0, 0), (10, 0)), - xvalues = Reference(ws, (0, 1), (10, 1)))) - self.cw = ChartWriter(self.scatterchart) - self.root = Element('test') - - def test_write_xaxis(self): - - self.cw._write_axis(self.root, self.scatterchart.x_axis, 'c:valAx') - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="b" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></test>') - - - def test_write_yaxis(self): - - self.cw._write_axis(self.root, self.scatterchart.y_axis, 'c:valAx') - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></test>') - - def test_write_series(self): - - self.cw._write_series(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:ser><c:idx val="0" /><c:order val="0" /><c:marker><c:symbol val="none" /></c:marker><c:xVal><c:numRef><c:f>data!$B$1:$B$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:xVal><c:yVal><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:yVal></c:ser></test>') - - def test_write_legend(self): - - self.cw._write_legend(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:legend><c:legendPos val="r" /><c:layout /></c:legend></test>') - - def test_write_print_settings(self): - - self.cw._write_print_settings(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:printSettings><c:headerFooter /><c:pageMargins b="0.75" footer="0.3" header="0.3" l="0.7" r="0.7" t="0.75" /><c:pageSetup /></c:printSettings></test>') - - def test_write_chart(self): - - self.cw._write_chart(self.root) - eq_(get_xml(self.root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><test><c:chart><c:plotArea><c:layout><c:manualLayout><c:layoutTarget val="inner" /><c:xMode val="edge" /><c:yMode val="edge" /><c:x val="1.28571428571" /><c:y val="0.2125" /><c:w val="0.6" /><c:h val="0.6" /></c:manualLayout></c:layout><c:scatterChart><c:scatterStyle val="lineMarker" /><c:ser><c:idx val="0" /><c:order val="0" /><c:marker><c:symbol val="none" /></c:marker><c:xVal><c:numRef><c:f>data!$B$1:$B$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:xVal><c:yVal><c:numRef><c:f>data!$A$1:$A$11</c:f><c:numCache><c:formatCode>General</c:formatCode><c:ptCount val="11" /><c:pt idx="0"><c:v>0</c:v></c:pt><c:pt idx="1"><c:v>1</c:v></c:pt><c:pt idx="2"><c:v>2</c:v></c:pt><c:pt idx="3"><c:v>3</c:v></c:pt><c:pt idx="4"><c:v>4</c:v></c:pt><c:pt idx="5"><c:v>5</c:v></c:pt><c:pt idx="6"><c:v>6</c:v></c:pt><c:pt idx="7"><c:v>7</c:v></c:pt><c:pt idx="8"><c:v>8</c:v></c:pt><c:pt idx="9"><c:v>9</c:v></c:pt><c:pt idx="10"><c:v>None</c:v></c:pt></c:numCache></c:numRef></c:yVal></c:ser><c:marker val="1" /><c:axId val="60871424" /><c:axId val="60873344" /></c:scatterChart><c:valAx><c:axId val="60871424" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="b" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60873344" /><c:crosses val="autoZero" /><c:auto val="1" /><c:lblAlgn val="ctr" /><c:lblOffset val="100" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx><c:valAx><c:axId val="60873344" /><c:scaling><c:orientation val="minMax" /><c:max val="10.0" /><c:min val="0" /></c:scaling><c:axPos val="l" /><c:majorGridlines /><c:numFmt formatCode="General" sourceLinked="1" /><c:tickLblPos val="nextTo" /><c:crossAx val="60871424" /><c:crosses val="autoZero" /><c:crossBetween val="midCat" /><c:majorUnit val="2.0" /></c:valAx></c:plotArea><c:legend><c:legendPos val="r" /><c:layout /></c:legend><c:plotVisOnly val="1" /></c:chart></test>') diff --git a/tablib/packages/openpyxl3/tests/test_data/genuine/empty-no-string.xlsx b/tablib/packages/openpyxl3/tests/test_data/genuine/empty-no-string.xlsx Binary files differdeleted file mode 100644 index 39490ac..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/genuine/empty-no-string.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/genuine/empty-with-styles.xlsx b/tablib/packages/openpyxl3/tests/test_data/genuine/empty-with-styles.xlsx Binary files differdeleted file mode 100644 index 250e9b4..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/genuine/empty-with-styles.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/genuine/empty.xlsx b/tablib/packages/openpyxl3/tests/test_data/genuine/empty.xlsx Binary files differdeleted file mode 100644 index 3749d02..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/genuine/empty.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/genuine/merge_range.xlsx b/tablib/packages/openpyxl3/tests/test_data/genuine/merge_range.xlsx Binary files differdeleted file mode 100644 index 9452e36..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/genuine/merge_range.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/app-multi-titles.xml b/tablib/packages/openpyxl3/tests/test_data/reader/app-multi-titles.xml deleted file mode 100644 index b32ec40..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/app-multi-titles.xml +++ /dev/null @@ -1,43 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
- <DocSecurity>0</DocSecurity>
- <ScaleCrop>false</ScaleCrop>
- <HeadingPairs>
- <vt:vector size="4" baseType="variant">
- <vt:variant>
- <vt:lpstr>Worksheets</vt:lpstr>
- </vt:variant>
- <vt:variant>
- <vt:i4>7</vt:i4>
- </vt:variant>
- <vt:variant>
- <vt:lpstr>Named Ranges</vt:lpstr>
- </vt:variant>
- <vt:variant>
- <vt:i4>7</vt:i4>
- </vt:variant>
- </vt:vector>
- </HeadingPairs>
- <TitlesOfParts>
- <vt:vector size="14" baseType="lpstr">
- <vt:lpstr>ToC</vt:lpstr>
- <vt:lpstr>ContractYear</vt:lpstr>
- <vt:lpstr>ContractTier</vt:lpstr>
- <vt:lpstr>Demand</vt:lpstr>
- <vt:lpstr>LinearizedFunction</vt:lpstr>
- <vt:lpstr>Market</vt:lpstr>
- <vt:lpstr>Transmission</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_10</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_12</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_13</vt:lpstr>
- <vt:lpstr>TS_discount_rate!Excel_BuiltIn_Print_Area_26</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_27</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_28</vt:lpstr>
- <vt:lpstr>Excel_BuiltIn_Print_Area_29</vt:lpstr>
- </vt:vector>
- </TitlesOfParts>
- <LinksUpToDate>false</LinksUpToDate>
- <SharedDoc>false</SharedDoc>
- <HyperlinksChanged>false</HyperlinksChanged>
- <AppVersion>12.0000</AppVersion>
-</Properties>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/empty-workbook-styles.xml b/tablib/packages/openpyxl3/tests/test_data/reader/empty-workbook-styles.xml deleted file mode 100644 index 4819c45..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/empty-workbook-styles.xml +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
- <fonts count="2">
- <font>
- <sz val="11" />
- <color theme="1" />
- <name val="Calibri" />
- <family val="2" />
- <scheme val="minor" />
- </font>
- <font>
- <sz val="11" />
- <color theme="1" />
- <name val="Calibri" />
- <family val="2" />
- <scheme val="minor" />
- </font>
- </fonts>
- <fills count="2">
- <fill>
- <patternFill patternType="none" />
- </fill>
- <fill>
- <patternFill patternType="gray125" />
- </fill>
- </fills>
- <borders count="1">
- <border>
- <left />
- <right />
- <top />
- <bottom />
- <diagonal />
- </border>
- </borders>
- <cellStyleXfs count="2">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0" />
- <xf numFmtId="9" fontId="1" fillId="0" borderId="0" applyFont="0"
- applyFill="0" applyBorder="0" applyAlignment="0" applyProtection="0" />
- </cellStyleXfs>
- <cellXfs count="2">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" />
- <xf numFmtId="9" fontId="0" fillId="0" borderId="0" xfId="1"
- applyFont="1" />
- </cellXfs>
- <cellStyles count="2">
- <cellStyle name="Normal" xfId="0" builtinId="0" />
- <cellStyle name="Percent" xfId="1" builtinId="5" />
- </cellStyles>
- <dxfs count="0" />
- <tableStyles count="0" defaultTableStyle="TableStyleMedium9"
- defaultPivotStyle="PivotStyleLight16" />
-</styleSheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/merged-ranges.xml b/tablib/packages/openpyxl3/tests/test_data/reader/merged-ranges.xml deleted file mode 100644 index 0cb17cf..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/merged-ranges.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><dimension ref="A1:E15"/><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="B16" sqref="B16"/></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"/><sheetData><row r="1" spans="1:5"><c r="A1" s="3"><v>1</v></c><c r="B1" s="3"><v>2</v></c><c r="C1" s="3"><v>3</v></c><c r="D1" s="3"><v>4</v></c></row><row r="3" spans="1:5"><c r="A3" s="2" t="s"><v>0</v></c><c r="B3" t="s"><v>1</v></c><c r="C3" s="2" t="s"><v>2</v></c><c r="D3" s="2" t="s"><v>3</v></c></row><row r="5" spans="1:5"><c r="C5" s="1" t="s"><v>4</v></c><c r="E5" s="1" t="s"><v>6</v></c></row><row r="6" spans="1:5"><c r="C6" s="1" t="s"><v>4</v></c><c r="E6" s="1" t="s"><v>6</v></c></row><row r="7" spans="1:5"><c r="C7" s="1" t="s"><v>4</v></c><c r="E7" s="1" t="s"><v>6</v></c></row><row r="8" spans="1:5"><c r="D8" s="1" t="s"><v>5</v></c></row><row r="9" spans="1:5"><c r="C9" s="1" t="s"><v>4</v></c><c r="E9" s="1" t="s"><v>6</v></c></row><row r="10" spans="1:5"><c r="C10" s="1" t="s"><v>4</v></c><c r="E10" s="1" t="s"><v>6</v></c></row><row r="11" spans="1:5"><c r="C11" s="1" t="s"><v>4</v></c><c r="E11" s="1" t="s"><v>6</v></c></row><row r="15" spans="1:5"><c r="B15" s="4"><v>10</v></c><c r="C15" s="4"/><c r="D15" s="4"/></row></sheetData><mergeCells count="1"><mergeCell ref="B15:D15"/></mergeCells><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/><pageSetup orientation="portrait" horizontalDpi="200" verticalDpi="200" r:id="rId1"/></worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/null_archive.xlsx b/tablib/packages/openpyxl3/tests/test_data/reader/null_archive.xlsx Binary files differdeleted file mode 100644 index 967263a..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/null_archive.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/null_file.xlsx b/tablib/packages/openpyxl3/tests/test_data/reader/null_file.xlsx deleted file mode 100644 index e69de29..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/null_file.xlsx +++ /dev/null diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/shared-strings-rich.xml b/tablib/packages/openpyxl3/tests/test_data/reader/shared-strings-rich.xml deleted file mode 100644 index b3b31f6..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/shared-strings-rich.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="3" uniqueCount="3">
- <si>
- <t>Welcome</t>
- </si>
- <si>
- <r>
- <t xml:space="preserve">to the best </t>
- </r><r>
- <rPr>
- <b/>
- <sz val="11"/>
- <color theme="1"/>
- <rFont val="Calibri"/>
- <family val="2"/>
- <scheme val="minor"/>
- </rPr><t xml:space="preserve">shop in </t>
- </r><r>
- <rPr>
- <b/>
- <u/>
- <sz val="11"/>
- <color theme="1"/>
- <rFont val="Calibri"/>
- <family val="2"/>
- <scheme val="minor"/>
- </rPr><t>town</t>
- </r>
- </si>
- <si>
- <t xml:space="preserve"> let's play </t>
- </si>
-</sst>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings-emptystring.xml b/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings-emptystring.xml deleted file mode 100644 index 1dd7caf..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings-emptystring.xml +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?> -<sst count="1" uniqueCount="1" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><si><t>Testing empty cell</t></si> <si><t/></si></sst> - diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings.xml b/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings.xml deleted file mode 100644 index aef87a0..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/sharedStrings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="3" uniqueCount="2"><si><t>This is cell A1 in Sheet 1</t></si><si><t>This is cell G5</t></si></sst>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/sheet2.xml b/tablib/packages/openpyxl3/tests/test_data/reader/sheet2.xml deleted file mode 100644 index 0176e57..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/sheet2.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><dimension ref="D1:K30"/><sheetViews><sheetView workbookViewId="0"><selection activeCell="L2" sqref="L2"/></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"/><sheetData><row r="1" spans="4:11"><c r="D1"><v>1</v></c><c r="K1" s="1"><v>0.01</v></c></row><row r="2" spans="4:11"><c r="D2"><v>2</v></c><c r="K2" s="1"><v>0.02</v></c></row><row r="3" spans="4:11"><c r="D3"><v>3</v></c><c r="K3" s="1"><v>0.03</v></c></row><row r="4" spans="4:11"><c r="D4"><v>4</v></c><c r="K4" s="1"><v>0.04</v></c></row><row r="5" spans="4:11"><c r="D5"><v>5</v></c><c r="G5" t="s"><v>1</v></c><c r="K5" s="1"><v>0.05</v></c></row><row r="6" spans="4:11"><c r="D6"><v>6</v></c><c r="K6" s="1"><v>0.06</v></c></row><row r="7" spans="4:11"><c r="D7"><v>7</v></c><c r="K7" s="1"><v>7.0000000000000007E-2</v></c></row><row r="8" spans="4:11"><c r="D8"><v>8</v></c><c r="K8" s="1"><v>0.08</v></c></row><row r="9" spans="4:11"><c r="D9"><v>9</v></c><c r="K9" s="1"><v>0.09</v></c></row><row r="10" spans="4:11"><c r="D10"><v>10</v></c><c r="K10" s="1"><v>0.1</v></c></row><row r="11" spans="4:11"><c r="D11"><v>11</v></c><c r="K11" s="1"><v>0.11</v></c></row><row r="12" spans="4:11"><c r="D12"><v>12</v></c><c r="K12" s="1"><v>0.12</v></c></row><row r="13" spans="4:11"><c r="D13"><v>13</v></c><c r="K13" s="1"><v>0.13</v></c></row><row r="14" spans="4:11"><c r="D14"><v>14</v></c><c r="K14" s="1"><v>0.14000000000000001</v></c></row><row r="15" spans="4:11"><c r="D15"><v>15</v></c><c r="K15" s="1"><v>0.15</v></c></row><row r="16" spans="4:11"><c r="D16"><v>16</v></c><c r="K16" s="1"><v>0.16</v></c></row><row r="17" spans="4:11"><c r="D17"><v>17</v></c><c r="K17" s="1"><v>0.17</v></c></row><row r="18" spans="4:11"><c r="D18"><v>18</v></c><c r="K18" s="1"><v>0.18</v></c></row><row r="19" spans="4:11"><c r="D19"><v>19</v></c><c r="K19" s="1"><v>0.19</v></c></row><row r="20" spans="4:11"><c r="D20"><v>20</v></c><c r="K20" s="1"><v>0.2</v></c></row><row r="21" spans="4:11"><c r="D21"><v>21</v></c><c r="K21" s="1"><v>0.21</v></c></row><row r="22" spans="4:11"><c r="D22"><v>22</v></c><c r="K22" s="1"><v>0.22</v></c></row><row r="23" spans="4:11"><c r="D23"><v>23</v></c><c r="K23" s="1"><v>0.23</v></c></row><row r="24" spans="4:11"><c r="D24"><v>24</v></c><c r="K24" s="1"><v>0.24</v></c></row><row r="25" spans="4:11"><c r="D25"><v>25</v></c><c r="K25" s="1"><v>0.25</v></c></row><row r="26" spans="4:11"><c r="D26"><v>26</v></c><c r="K26" s="1"><v>0.26</v></c></row><row r="27" spans="4:11"><c r="D27"><v>27</v></c><c r="K27" s="1"><v>0.27</v></c></row><row r="28" spans="4:11"><c r="D28"><v>28</v></c><c r="K28" s="1"><v>0.28000000000000003</v></c></row><row r="29" spans="4:11"><c r="D29"><v>29</v></c><c r="K29" s="1"><v>0.28999999999999998</v></c></row><row r="30" spans="4:11"><c r="D30"><v>30</v></c><c r="K30" s="1"><v>0.3</v></c></row></sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/></worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/simple-styles.xml b/tablib/packages/openpyxl3/tests/test_data/reader/simple-styles.xml deleted file mode 100644 index 2f3b255..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/simple-styles.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
- <numFmts count="1">
- <numFmt numFmtId="165" formatCode="yyyy-mm-dd"/>
- </numFmts>
- <fonts count="1">
- <font>
- <sz val="11"/>
- <color theme="1"/>
- <name val="Calibri"/>
- <family val="2"/>
- <scheme val="minor"/>
- </font>
- </fonts>
- <fills count="2">
- <fill>
- <patternFill patternType="none"/>
- </fill>
- <fill>
- <patternFill patternType="gray125"/>
- </fill>
- </fills>
- <borders count="1">
- <border>
- <left/>
- <right/>
- <top/>
- <bottom/>
- <diagonal/>
- </border>
- </borders>
- <cellStyleXfs count="1">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
- </cellStyleXfs>
- <cellXfs count="4">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
- <xf numFmtId="9" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- <xf numFmtId="165" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- <xf numFmtId="2" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- </cellXfs>
- <cellStyles count="1">
- <cellStyle name="Normal" xfId="0" builtinId="0"/>
- </cellStyles>
- <dxfs count="0"/>
- <tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleLight16"/>
-</styleSheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/reader/workbook.xml b/tablib/packages/openpyxl3/tests/test_data/reader/workbook.xml deleted file mode 100644 index 2697d4c..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/reader/workbook.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?> -<workbook xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505" /><workbookPr codeName="ThisWorkbook" defaultThemeVersion="124226" /><bookViews><workbookView activeTab="0" autoFilterDateGrouping="1" firstSheet="0" minimized="0" showHorizontalScroll="1" showSheetTabs="1" showVerticalScroll="1" tabRatio="600" visibility="visible" /></bookViews><sheets><sheet name="My Sheeet" r:id="rId1" sheetId="1" /><sheet name="My Second Sheet" r:id="rId2" sheetId="2" /></sheets><definedNames><definedName name="THE_GREAT_ANSWER">'My Sheeet'!$D$8</definedName></definedNames><calcPr calcId="124519" calcMode="auto" fullCalcOnLoad="1" /></workbook>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/.rels b/tablib/packages/openpyxl3/tests/test_data/writer/expected/.rels deleted file mode 100644 index 450d174..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/.rels +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Target="xl/workbook.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" /><Relationship Id="rId2" Target="docProps/core.xml" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" /><Relationship Id="rId3" Target="docProps/app.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" /></Relationships>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/[Content_Types].xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/[Content_Types].xml deleted file mode 100644 index 39285bb..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/[Content_Types].xml +++ /dev/null @@ -1,31 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
- <Override ContentType="application/vnd.openxmlformats-officedocument.theme+xml"
- PartName="/xl/theme/theme1.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml"
- PartName="/xl/styles.xml" />
- <Default ContentType="application/vnd.openxmlformats-package.relationships+xml"
- Extension="rels" />
- <Default ContentType="application/xml" Extension="xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"
- PartName="/xl/workbook.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.extended-properties+xml"
- PartName="/docProps/app.xml" />
- <Override ContentType="application/vnd.openxmlformats-package.core-properties+xml"
- PartName="/docProps/core.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml"
- PartName="/xl/sharedStrings.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
- PartName="/xl/worksheets/sheet1.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
- PartName="/xl/worksheets/sheet2.xml" />
- <Override
- ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"
- PartName="/xl/worksheets/sheet3.xml" />
-</Types>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/app.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/app.xml deleted file mode 100644 index a7cccf7..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/app.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<Properties xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties" xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes"><Application>Microsoft Excel</Application><DocSecurity>0</DocSecurity><ScaleCrop>false</ScaleCrop><Company /><LinksUpToDate>false</LinksUpToDate><SharedDoc>false</SharedDoc><HyperlinksChanged>false</HyperlinksChanged><AppVersion>12.0000</AppVersion><HeadingPairs><vt:vector baseType="variant" size="2"><vt:variant><vt:lpstr>Worksheets</vt:lpstr></vt:variant><vt:variant><vt:i4>3</vt:i4></vt:variant></vt:vector></HeadingPairs><TitlesOfParts><vt:vector baseType="lpstr" size="3"><vt:lpstr>Sheet</vt:lpstr><vt:lpstr>Sheet1</vt:lpstr><vt:lpstr>Sheet2</vt:lpstr></vt:vector></TitlesOfParts></Properties>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/core.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/core.xml deleted file mode 100644 index 4a99a55..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/core.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<cp:coreProperties xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcmitype="http://purl.org/dc/dcmitype/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><dc:creator>TEST_USER</dc:creator><cp:lastModifiedBy>SOMEBODY</cp:lastModifiedBy><dcterms:created xsi:type="dcterms:W3CDTF">2010-04-01T20:30:00Z</dcterms:created><dcterms:modified xsi:type="dcterms:W3CDTF">2010-04-05T14:05:30Z</dcterms:modified></cp:coreProperties>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/font.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/font.xml deleted file mode 100644 index dabe15d..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/font.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<fonts count="1">
- <font>
- <sz val="11"/>
- <color theme="1"/>
- <name val="Calibri"/>
- <family val="2"/>
- <scheme val="minor"/>
- </font>
-</fonts>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sharedStrings.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sharedStrings.xml deleted file mode 100644 index ff7ec02..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sharedStrings.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<sst uniqueCount="3" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><si><t>hello</t></si><si><t>world</t></si><si><t>nice</t></si></sst>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1.xml deleted file mode 100644 index ab96c9f..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F42" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <selection activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="42" spans="1:6">
- <c r="F42" t="s">
- <v>0</v>
- </c>
- </row>
- </sheetData>
-</worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_auto_filter.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_auto_filter.xml deleted file mode 100644 index b4178b8..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_auto_filter.xml +++ /dev/null @@ -1 +0,0 @@ -<worksheet xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetPr><outlinePr summaryRight="1" summaryBelow="1"></outlinePr></sheetPr><dimension ref="A1:F42"></dimension><sheetViews><sheetView workbookViewId="0"><selection sqref="A1" activeCell="A1"></selection></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"></sheetFormatPr><cols><col collapsed="0" min="6" max="6" width="9.10"></col></cols><sheetData><row spans="1:6" r="42"><c t="s" r="F42"><v>0</v></c></row></sheetData><autoFilter ref="A1:F1"></autoFilter></worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_formula.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_formula.xml deleted file mode 100644 index ed98da2..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_formula.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F3" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <selection activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="1" spans="1:6">
- <c r="F1" t="n">
- <v>10</v>
- </c>
- </row>
- <row r="2" spans="1:6">
- <c r="F2" t="n">
- <v>32</v>
- </c>
- </row>
- <row r="3" spans="1:6">
- <c r="F3" t="f">
- <f>F1+F2</f><v />
- </c>
- </row>
- </sheetData>
-</worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_both.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_both.xml deleted file mode 100644 index a83d2a0..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_both.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F42" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <pane xSplit="3" ySplit="3" topLeftCell="D4" activePane="bottomRight" state="frozen" />
- <selection pane="topRight"/>
- <selection pane="bottomLeft"/>
- <selection pane="bottomRight" activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="42" spans="1:6">
- <c r="F42" t="s">
- <v>0</v>
- </c>
- </row>
- </sheetData>
-</worksheet>
diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_horiz.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_horiz.xml deleted file mode 100644 index f5aa23f..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_horiz.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F42" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <pane ySplit="3" topLeftCell="A4" activePane="bottomLeft" state="frozen"/>
- <selection pane="bottomLeft" activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="42" spans="1:6">
- <c r="F42" t="s">
- <v>0</v>
- </c>
- </row>
- </sheetData>
-</worksheet>
diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_vert.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_vert.xml deleted file mode 100644 index 12ca034..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_freeze_panes_vert.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F42" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <pane xSplit="3" topLeftCell="D1" activePane="topRight" state="frozen"/>
- <selection pane="topRight" activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="42" spans="1:6">
- <c r="F42" t="s">
- <v>0</v>
- </c>
- </row>
- </sheetData>
-</worksheet>
diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_height.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_height.xml deleted file mode 100644 index 428bbfa..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_height.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:F1" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <selection activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="6" min="6" width="9.10" />
- </cols>
- <sheetData>
- <row r="1" spans="1:6" customHeight="1" ht="30">
- <c r="F1" t="n">
- <v>10</v>
- </c>
- </row>
- </sheetData>
-</worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml deleted file mode 100644 index 70e4eb4..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<worksheet xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
- <sheetPr>
- <outlinePr summaryBelow="1" summaryRight="1" />
- </sheetPr>
- <dimension ref="A1:A1" />
- <sheetViews>
- <sheetView workbookViewId="0">
- <selection activeCell="A1" sqref="A1" />
- </sheetView>
- </sheetViews>
- <sheetFormatPr defaultRowHeight="15" />
- <cols>
- <col collapsed="0" max="1" min="1" width="9.10" />
- </cols>
- <sheetData>
- <row r="1" spans="1:1">
- <c r="A1" t="s">
- <v>0</v>
- </c>
- </row>
- </sheetData>
- <hyperlinks>
- <hyperlink display="http://test.com" ref="A1" r:id='rId1'/>
- </hyperlinks>
-</worksheet>
-
diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml.rels b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml.rels deleted file mode 100644 index 843c040..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_hyperlink.xml.rels +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
- <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="http://test.com/" TargetMode="External"/>
- <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink" Target="http://test2.com/" TargetMode="External"/>
-</Relationships>
-
diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_style.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_style.xml deleted file mode 100644 index 27af47e..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/sheet1_style.xml +++ /dev/null @@ -1 +0,0 @@ -<worksheet xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><sheetPr><outlinePr summaryRight="1" summaryBelow="1"></outlinePr></sheetPr><dimension ref="A1:F1"></dimension><sheetViews><sheetView workbookViewId="0"><selection sqref="A1" activeCell="A1"></selection></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"></sheetFormatPr><cols><col collapsed="0" min="6" max="6" width="9.10"></col></cols><sheetData><row spans="1:6" r="1"><c t="n" s="1" r="F1"><v>0.13</v></c></row></sheetData></worksheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/simple-styles.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/simple-styles.xml deleted file mode 100644 index 2f3b255..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/simple-styles.xml +++ /dev/null @@ -1,46 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
- <numFmts count="1">
- <numFmt numFmtId="165" formatCode="yyyy-mm-dd"/>
- </numFmts>
- <fonts count="1">
- <font>
- <sz val="11"/>
- <color theme="1"/>
- <name val="Calibri"/>
- <family val="2"/>
- <scheme val="minor"/>
- </font>
- </fonts>
- <fills count="2">
- <fill>
- <patternFill patternType="none"/>
- </fill>
- <fill>
- <patternFill patternType="gray125"/>
- </fill>
- </fills>
- <borders count="1">
- <border>
- <left/>
- <right/>
- <top/>
- <bottom/>
- <diagonal/>
- </border>
- </borders>
- <cellStyleXfs count="1">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0"/>
- </cellStyleXfs>
- <cellXfs count="4">
- <xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/>
- <xf numFmtId="9" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- <xf numFmtId="165" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- <xf numFmtId="2" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/>
- </cellXfs>
- <cellStyles count="1">
- <cellStyle name="Normal" xfId="0" builtinId="0"/>
- </cellStyles>
- <dxfs count="0"/>
- <tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleLight16"/>
-</styleSheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/styles.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/styles.xml deleted file mode 100644 index 6a1ffd1..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/styles.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fonts count="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts><fills count="2"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="2"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium9" defaultPivotStyle="PivotStyleLight16"/></styleSheet>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/theme1.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/theme1.xml deleted file mode 100644 index 012e249..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/theme1.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" name="Office Theme"><a:themeElements><a:clrScheme name="Office"><a:dk1><a:sysClr val="windowText" lastClr="000000"/></a:dk1><a:lt1><a:sysClr val="window" lastClr="FFFFFF"/></a:lt1><a:dk2><a:srgbClr val="1F497D"/></a:dk2><a:lt2><a:srgbClr val="EEECE1"/></a:lt2><a:accent1><a:srgbClr val="4F81BD"/></a:accent1><a:accent2><a:srgbClr val="C0504D"/></a:accent2><a:accent3><a:srgbClr val="9BBB59"/></a:accent3><a:accent4><a:srgbClr val="8064A2"/></a:accent4><a:accent5><a:srgbClr val="4BACC6"/></a:accent5><a:accent6><a:srgbClr val="F79646"/></a:accent6><a:hlink><a:srgbClr val="0000FF"/></a:hlink><a:folHlink><a:srgbClr val="800080"/></a:folHlink></a:clrScheme><a:fontScheme name="Office"><a:majorFont><a:latin typeface="Cambria"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Times New Roman"/><a:font script="Hebr" typeface="Times New Roman"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="MoolBoran"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Times New Roman"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:majorFont><a:minorFont><a:latin typeface="Calibri"/><a:ea typeface=""/><a:cs typeface=""/><a:font script="Jpan" typeface="MS Pゴシック"/><a:font script="Hang" typeface="맑은 고딕"/><a:font script="Hans" typeface="宋体"/><a:font script="Hant" typeface="新細明體"/><a:font script="Arab" typeface="Arial"/><a:font script="Hebr" typeface="Arial"/><a:font script="Thai" typeface="Tahoma"/><a:font script="Ethi" typeface="Nyala"/><a:font script="Beng" typeface="Vrinda"/><a:font script="Gujr" typeface="Shruti"/><a:font script="Khmr" typeface="DaunPenh"/><a:font script="Knda" typeface="Tunga"/><a:font script="Guru" typeface="Raavi"/><a:font script="Cans" typeface="Euphemia"/><a:font script="Cher" typeface="Plantagenet Cherokee"/><a:font script="Yiii" typeface="Microsoft Yi Baiti"/><a:font script="Tibt" typeface="Microsoft Himalaya"/><a:font script="Thaa" typeface="MV Boli"/><a:font script="Deva" typeface="Mangal"/><a:font script="Telu" typeface="Gautami"/><a:font script="Taml" typeface="Latha"/><a:font script="Syrc" typeface="Estrangelo Edessa"/><a:font script="Orya" typeface="Kalinga"/><a:font script="Mlym" typeface="Kartika"/><a:font script="Laoo" typeface="DokChampa"/><a:font script="Sinh" typeface="Iskoola Pota"/><a:font script="Mong" typeface="Mongolian Baiti"/><a:font script="Viet" typeface="Arial"/><a:font script="Uigh" typeface="Microsoft Uighur"/></a:minorFont></a:fontScheme><a:fmtScheme name="Office"><a:fillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="50000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="35000"><a:schemeClr val="phClr"><a:tint val="37000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:tint val="15000"/><a:satMod val="350000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="1"/></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:shade val="51000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="80000"><a:schemeClr val="phClr"><a:shade val="93000"/><a:satMod val="130000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="94000"/><a:satMod val="135000"/></a:schemeClr></a:gs></a:gsLst><a:lin ang="16200000" scaled="0"/></a:gradFill></a:fillStyleLst><a:lnStyleLst><a:ln w="9525" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"><a:shade val="95000"/><a:satMod val="105000"/></a:schemeClr></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="25400" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln><a:ln w="38100" cap="flat" cmpd="sng" algn="ctr"><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:prstDash val="solid"/></a:ln></a:lnStyleLst><a:effectStyleLst><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="20000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="38000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst></a:effectStyle><a:effectStyle><a:effectLst><a:outerShdw blurRad="40000" dist="23000" dir="5400000" rotWithShape="0"><a:srgbClr val="000000"><a:alpha val="35000"/></a:srgbClr></a:outerShdw></a:effectLst><a:scene3d><a:camera prst="orthographicFront"><a:rot lat="0" lon="0" rev="0"/></a:camera><a:lightRig rig="threePt" dir="t"><a:rot lat="0" lon="0" rev="1200000"/></a:lightRig></a:scene3d><a:sp3d><a:bevelT w="63500" h="25400"/></a:sp3d></a:effectStyle></a:effectStyleLst><a:bgFillStyleLst><a:solidFill><a:schemeClr val="phClr"/></a:solidFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="40000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="40000"><a:schemeClr val="phClr"><a:tint val="45000"/><a:shade val="99000"/><a:satMod val="350000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="20000"/><a:satMod val="255000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="-80000" r="50000" b="180000"/></a:path></a:gradFill><a:gradFill rotWithShape="1"><a:gsLst><a:gs pos="0"><a:schemeClr val="phClr"><a:tint val="80000"/><a:satMod val="300000"/></a:schemeClr></a:gs><a:gs pos="100000"><a:schemeClr val="phClr"><a:shade val="30000"/><a:satMod val="200000"/></a:schemeClr></a:gs></a:gsLst><a:path path="circle"><a:fillToRect l="50000" t="50000" r="50000" b="50000"/></a:path></a:gradFill></a:bgFillStyleLst></a:fmtScheme></a:themeElements><a:objectDefaults/><a:extraClrSchemeLst/></a:theme>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml b/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml deleted file mode 100644 index 0e397a7..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<workbook xml:space="preserve" xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505" /><workbookPr codeName="ThisWorkbook" defaultThemeVersion="124226" /><bookViews><workbookView activeTab="0" autoFilterDateGrouping="1" firstSheet="0" minimized="0" showHorizontalScroll="1" showSheetTabs="1" showVerticalScroll="1" tabRatio="600" visibility="visible" /></bookViews><sheets><sheet name="Sheet" r:id="rId1" sheetId="1" /></sheets><definedNames /><calcPr calcId="124519" calcMode="auto" fullCalcOnLoad="1" /></workbook>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml.rels b/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml.rels deleted file mode 100644 index c41181c..0000000 --- a/tablib/packages/openpyxl3/tests/test_data/writer/expected/workbook.xml.rels +++ /dev/null @@ -1,2 +0,0 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Target="worksheets/sheet1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" /><Relationship Id="rId2" Target="sharedStrings.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" /><Relationship Id="rId3" Target="styles.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" /><Relationship Id="rId4" Target="theme/theme1.xml" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" /></Relationships>
\ No newline at end of file diff --git a/tablib/packages/openpyxl3/tests/test_dump.py b/tablib/packages/openpyxl3/tests/test_dump.py deleted file mode 100644 index 714cfb3..0000000 --- a/tablib/packages/openpyxl3/tests/test_dump.py +++ /dev/null @@ -1,109 +0,0 @@ - -# file openpyxl/tests/test_dump.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -from datetime import time, datetime - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -from openpyxl.workbook import Workbook -from openpyxl.cell import get_column_letter - -from openpyxl.reader.excel import load_workbook - -from openpyxl.writer.strings import StringTableBuilder - -from tempfile import NamedTemporaryFile -import os -import shutil - -def test_dump_sheet(): - - test_file = NamedTemporaryFile(prefix='openpyxl.', suffix='.xlsx', delete=False) - test_file.close() - test_filename = test_file.name - - wb = Workbook(optimized_write = True) - - ws = wb.create_sheet() - - letters = [get_column_letter(x+1) for x in range(20)] - - expected_rows = [] - - for row in range(20): - - expected_rows.append(['%s%d' % (letter, row+1) for letter in letters]) - - for row in range(20): - - expected_rows.append([(row+1) for letter in letters]) - - for row in range(10): - - expected_rows.append([datetime(2010, ((x % 12)+1), row+1) for x in range(len(letters))]) - - for row in range(20): - - expected_rows.append(['=%s%d' % (letter, row+1) for letter in letters]) - - for row in expected_rows: - - ws.append(row) - - wb.save(test_filename) - - wb2 = load_workbook(test_filename, True) - - ws = wb2.worksheets[0] - - - for ex_row, ws_row in zip(expected_rows[:-20], ws.iter_rows()): - - for ex_cell, ws_cell in zip(ex_row, ws_row): - - eq_(ex_cell, ws_cell.internal_value) - - os.remove(test_filename) - - -def test_table_builder(): - - sb = StringTableBuilder() - - result = {'a':0, 'b':1, 'c':2, 'd':3} - - for letter in sorted(result.keys()): - - for x in range(5): - - sb.add(letter) - - table = dict(sb.get_table()) - - for key,idx in result.items(): - eq_(idx, table[key]) diff --git a/tablib/packages/openpyxl3/tests/test_iter.py b/tablib/packages/openpyxl3/tests/test_iter.py deleted file mode 100644 index 899f8d7..0000000 --- a/tablib/packages/openpyxl3/tests/test_iter.py +++ /dev/null @@ -1,112 +0,0 @@ -# file openpyxl/tests/test_iter.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -from nose.tools import eq_, raises, assert_raises -import os.path as osp -from openpyxl.tests.helper import DATADIR -from openpyxl.reader.iter_worksheet import get_range_boundaries -from openpyxl.reader.excel import load_workbook -import datetime - -class TestWorksheet(object): - - workbook_name = osp.join(DATADIR, 'genuine', 'empty.xlsx') - -class TestText(TestWorksheet): - sheet_name = 'Sheet1 - Text' - - expected = [['This is cell A1 in Sheet 1', None, None, None, None, None, None], - [None, None, None, None, None, None, None], - [None, None, None, None, None, None, None], - [None, None, None, None, None, None, None], - [None, None, None, None, None, None, 'This is cell G5'], ] - - def test_read_fast_integrated(self): - - wb = load_workbook(filename = self.workbook_name, use_iterators = True) - ws = wb.get_sheet_by_name(name = self.sheet_name) - - for row, expected_row in zip(ws.iter_rows(), self.expected): - - row_values = [x.internal_value for x in row] - - eq_(row_values, expected_row) - - - def test_get_boundaries_range(self): - - eq_(get_range_boundaries('C1:C4'), (3, 1, 3, 4)) - - def test_get_boundaries_one(self): - - - eq_(get_range_boundaries('C1'), (3, 1, 4, 1)) - - def test_read_single_cell_range(self): - - wb = load_workbook(filename = self.workbook_name, use_iterators = True) - ws = wb.get_sheet_by_name(name = self.sheet_name) - - eq_('This is cell A1 in Sheet 1', list(ws.iter_rows('A1'))[0][0].internal_value) - -class TestIntegers(TestWorksheet): - - sheet_name = 'Sheet2 - Numbers' - - expected = [[x + 1] for x in range(30)] - - query_range = 'D1:E30' - - def test_read_fast_integrated(self): - - wb = load_workbook(filename = self.workbook_name, use_iterators = True) - ws = wb.get_sheet_by_name(name = self.sheet_name) - - for row, expected_row in zip(ws.iter_rows(self.query_range), self.expected): - - row_values = [x.internal_value for x in row] - - eq_(row_values, expected_row) - -class TestFloats(TestWorksheet): - - sheet_name = 'Sheet2 - Numbers' - query_range = 'K1:L30' - expected = expected = [[(x + 1) / 100.0] for x in range(30)] - -class TestDates(TestWorksheet): - - sheet_name = 'Sheet4 - Dates' - - def test_read_single_cell_date(self): - - wb = load_workbook(filename = self.workbook_name, use_iterators = True) - ws = wb.get_sheet_by_name(name = self.sheet_name) - - eq_(datetime.datetime(1973, 5, 20), list(ws.iter_rows('A1'))[0][0].internal_value) - eq_(datetime.datetime(1973, 5, 20, 9, 15, 2), list(ws.iter_rows('C1'))[0][0].internal_value) - - - diff --git a/tablib/packages/openpyxl3/tests/test_meta.py b/tablib/packages/openpyxl3/tests/test_meta.py deleted file mode 100644 index 06051ad..0000000 --- a/tablib/packages/openpyxl3/tests/test_meta.py +++ /dev/null @@ -1,50 +0,0 @@ -# file openpyxl/tests/test_meta.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os.path - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content -from openpyxl.writer.workbook import write_content_types, write_root_rels -from openpyxl.workbook import Workbook - - -def test_write_content_types(): - wb = Workbook() - wb.create_sheet() - wb.create_sheet() - content = write_content_types(wb) - reference_file = os.path.join(DATADIR, 'writer', 'expected', - '[Content_Types].xml') - assert_equals_file_content(reference_file, content) - - -def test_write_root_rels(): - wb = Workbook() - content = write_root_rels(wb) - reference_file = os.path.join(DATADIR, 'writer', 'expected', '.rels') - assert_equals_file_content(reference_file, content) diff --git a/tablib/packages/openpyxl3/tests/test_named_range.py b/tablib/packages/openpyxl3/tests/test_named_range.py deleted file mode 100644 index c6d9d58..0000000 --- a/tablib/packages/openpyxl3/tests/test_named_range.py +++ /dev/null @@ -1,102 +0,0 @@ -# file openpyxl/tests/test_named_range.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os.path - -# 3rd-party imports -from nose.tools import eq_, assert_raises - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.namedrange import split_named_range -from openpyxl.reader.workbook import read_named_ranges -from openpyxl.shared.exc import NamedRangeException -from openpyxl.reader.excel import load_workbook - - -def test_split(): - eq_([('My Sheet', '$D$8'), ], split_named_range("'My Sheet'!$D$8")) - - -def test_split_no_quotes(): - eq_([('HYPOTHESES', '$B$3:$L$3'), ], split_named_range('HYPOTHESES!$B$3:$L$3')) - - -def test_bad_range_name(): - assert_raises(NamedRangeException, split_named_range, 'HYPOTHESES$B$3') - - -def test_read_named_ranges(): - - class DummyWs(object): - title = 'My Sheeet' - - def __str__(self): - return self.title - - class DummyWB(object): - - def get_sheet_by_name(self, name): - return DummyWs() - - with open(os.path.join(DATADIR, 'reader', 'workbook.xml')) as handle: - content = handle.read() - named_ranges = read_named_ranges(content, DummyWB()) - eq_(["My Sheeet!$D$8"], [str(range) for range in named_ranges]) - -def test_oddly_shaped_named_ranges(): - - ranges_counts = ((4, 'TEST_RANGE'), - (3, 'TRAP_1'), - (13, 'TRAP_2')) - - def check_ranges(ws, count, range_name): - - eq_(count, len(ws.range(range_name))) - - wb = load_workbook(os.path.join(DATADIR, 'genuine', 'merge_range.xlsx'), - use_iterators = False) - - ws = wb.worksheets[0] - - for count, range_name in ranges_counts: - - yield check_ranges, ws, count, range_name - - -def test_merged_cells_named_range(): - - wb = load_workbook(os.path.join(DATADIR, 'genuine', 'merge_range.xlsx'), - use_iterators = False) - - ws = wb.worksheets[0] - - cell = ws.range('TRAP_3') - - eq_('B15', cell.get_coordinate()) - - eq_(10, cell.value) diff --git a/tablib/packages/openpyxl3/tests/test_number_format.py b/tablib/packages/openpyxl3/tests/test_number_format.py deleted file mode 100644 index 54b0b88..0000000 --- a/tablib/packages/openpyxl3/tests/test_number_format.py +++ /dev/null @@ -1,142 +0,0 @@ -# file openpyxl/tests/test_number_format.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -from datetime import datetime, date - -# 3rd party imports -from nose.tools import eq_, assert_almost_equal, assert_raises - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.worksheet import Worksheet -from openpyxl.cell import Cell -from openpyxl.style import NumberFormat -from openpyxl.shared.date_time import SharedDate - - -class TestNumberFormat(object): - - @classmethod - def setup_class(cls): - cls.workbook = Workbook() - cls.worksheet = Worksheet(cls.workbook, 'Test') - cls.sd = SharedDate() - - def test_convert_date_to_julian(self): - eq_(40167, self.sd.to_julian(2009, 12, 20)) - - def test_convert_date_from_julian(self): - - def test_date_equal(julian, datetime): - - eq_(self.sd.from_julian(julian), datetime) - - date_pairs= ( - (40167, datetime(2009, 12, 20)), - (21980, datetime(1960, 0o3, 0o5)), - ) - - for count, dt in date_pairs: - yield test_date_equal, count, dt - - def test_convert_datetime_to_julian(self): - eq_(40167, self.sd.datetime_to_julian(datetime(2009, 12, 20))) - - def test_insert_float(self): - self.worksheet.cell('A1').value = 3.14 - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_insert_percentage(self): - self.worksheet.cell('A1').value = '3.14%' - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - assert_almost_equal(0.0314, self.worksheet.cell('A1').value) - - def test_insert_datetime(self): - self.worksheet.cell('A1').value = date.today() - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_insert_date(self): - self.worksheet.cell('A1').value = datetime.now() - eq_(Cell.TYPE_NUMERIC, self.worksheet.cell('A1')._data_type) - - def test_internal_date(self): - dt = datetime(2010, 7, 13, 6, 37, 41) - self.worksheet.cell('A3').value = dt - eq_(40372.27616898148, self.worksheet.cell('A3')._value) - - def test_datetime_interpretation(self): - dt = datetime(2010, 7, 13, 6, 37, 41) - self.worksheet.cell('A3').value = dt - eq_(dt, self.worksheet.cell('A3').value) - - def test_date_interpretation(self): - dt = date(2010, 7, 13) - self.worksheet.cell('A3').value = dt - eq_(datetime(2010, 7, 13, 0, 0), self.worksheet.cell('A3').value) - - def test_number_format_style(self): - self.worksheet.cell('A1').value = '12.6%' - eq_(NumberFormat.FORMAT_PERCENTAGE, \ - self.worksheet.cell('A1').style.number_format.format_code) - - def test_date_format_on_non_date(self): - cell = self.worksheet.cell('A1') - - def check_date_pair(count, date_string): - cell.value = datetime.strptime(date_string, '%Y-%m-%d') - eq_(count, cell._value) - - date_pairs = ( - (15, '1900-01-15'), - (59, '1900-02-28'), - (61, '1900-03-01'), - (367, '1901-01-01'), - (2958465, '9999-12-31'), ) - for count, date_string in date_pairs: - yield check_date_pair, count, date_string - - def test_1900_leap_year(self): - assert_raises(ValueError, self.sd.from_julian, 60) - assert_raises(ValueError, self.sd.to_julian, 1900, 2, 29) - - def test_bad_date(self): - - def check_bad_date(year, month, day): - assert_raises(ValueError, self.sd.to_julian, year, month, day) - - bad_dates = ((1776, 0o7, 0o4), (1899, 12, 31), ) - for year, month, day in bad_dates: - yield check_bad_date, year, month, day - - def test_bad_julian_date(self): - assert_raises(ValueError, self.sd.from_julian, -1) - - def test_mac_date(self): - self.sd.excel_base_date = self.sd.CALENDAR_MAC_1904 - assert_raises(NotImplementedError, self.sd.to_julian, 2000, 1, 1) - assert_raises(NotImplementedError, self.sd.from_julian, 1) - self.sd.excel_base_date = self.sd.CALENDAR_WINDOWS_1900 diff --git a/tablib/packages/openpyxl3/tests/test_password_hash.py b/tablib/packages/openpyxl3/tests/test_password_hash.py deleted file mode 100644 index fd2fddf..0000000 --- a/tablib/packages/openpyxl3/tests/test_password_hash.py +++ /dev/null @@ -1,41 +0,0 @@ -# file openpyxl/tests/test_password_hash.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.shared.password_hasher import hash_password -from openpyxl.worksheet import SheetProtection - - -def test_hasher(): - eq_('CBEB', hash_password('test')) - - -def test_sheet_protection(): - protection = SheetProtection() - protection.password = 'test' - eq_('CBEB', protection.password) diff --git a/tablib/packages/openpyxl3/tests/test_props.py b/tablib/packages/openpyxl3/tests/test_props.py deleted file mode 100644 index 07d447c..0000000 --- a/tablib/packages/openpyxl3/tests/test_props.py +++ /dev/null @@ -1,124 +0,0 @@ -# coding=utf-8 -# file openpyxl/tests/test_props.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -from zipfile import ZipFile, ZIP_DEFLATED -from datetime import datetime -import os.path - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.tests.helper import DATADIR, TMPDIR, make_tmpdir, clean_tmpdir, \ - assert_equals_file_content -from openpyxl.reader.workbook import read_properties_core, \ - read_sheets_titles, get_number_of_parts -from openpyxl.writer.workbook import write_properties_core, \ - write_properties_app -from openpyxl.shared.ooxml import ARC_APP, ARC_CORE -from openpyxl.workbook import DocumentProperties, Workbook - - -class TestReaderProps(object): - - @classmethod - def setup_class(cls): - cls.genuine_filename = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - cls.archive = ZipFile(cls.genuine_filename, 'r', ZIP_DEFLATED) - - @classmethod - def teardown_class(cls): - cls.archive.close() - - def test_read_properties_core(self): - content = self.archive.read(ARC_CORE) - prop = read_properties_core(content) - eq_(prop.creator, '*.*') - eq_(prop.last_modified_by, 'Aurélien Campéas') - eq_(prop.created, datetime(2010, 4, 9, 20, 43, 12)) - eq_(prop.modified, datetime(2011, 2, 9, 13, 49, 32)) - - def test_read_sheets_titles(self): - content = self.archive.read(ARC_APP) - sheet_titles = read_sheets_titles(content) - eq_(sheet_titles, \ - ['Sheet1 - Text', 'Sheet2 - Numbers', 'Sheet3 - Formulas', 'Sheet4 - Dates']) - - -class TestReaderPropsMixed(object): - - @classmethod - def setup_class(cls): - reference_filename = \ - os.path.join(DATADIR, 'reader', 'app-multi-titles.xml') - with open(reference_filename) as handle: - cls.content = handle.read() - - def test_read_sheet_titles_mixed(self): - sheet_titles = read_sheets_titles(self.content) - eq_(sheet_titles, - ['ToC', 'ContractYear', 'ContractTier', 'Demand', - 'LinearizedFunction', 'Market', 'Transmission']) - - def test_number_of_parts(self): - parts_number = get_number_of_parts(self.content) - eq_(parts_number, - ({'Worksheets': 7, 'Named Ranges': 7}, - ['Worksheets', 'Named Ranges'])) - - -class TestWriteProps(object): - - @classmethod - def setup_class(cls): - make_tmpdir() - cls.tmp_filename = os.path.join(TMPDIR, 'test.xlsx') - cls.prop = DocumentProperties() - - @classmethod - def teardown_class(cls): - clean_tmpdir() - - def test_write_properties_core(self): - self.prop.creator = 'TEST_USER' - self.prop.last_modified_by = 'SOMEBODY' - self.prop.created = datetime(2010, 4, 1, 20, 30, 00) - self.prop.modified = datetime(2010, 4, 5, 14, 5, 30) - content = write_properties_core(self.prop) - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'core.xml'), - content) - - def test_write_properties_app(self): - wb = Workbook() - wb.create_sheet() - wb.create_sheet() - content = write_properties_app(wb) - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'app.xml'), - content) diff --git a/tablib/packages/openpyxl3/tests/test_read.py b/tablib/packages/openpyxl3/tests/test_read.py deleted file mode 100644 index 1240164..0000000 --- a/tablib/packages/openpyxl3/tests/test_read.py +++ /dev/null @@ -1,134 +0,0 @@ -# file openpyxl/tests/test_read.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os.path - -# 3rd party imports -from nose.tools import eq_, raises - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.worksheet import Worksheet -from openpyxl.workbook import Workbook -from openpyxl.style import NumberFormat, Style -from openpyxl.reader.worksheet import read_worksheet, read_dimension -from openpyxl.reader.excel import load_workbook -from openpyxl.shared.exc import InvalidFileException - - -def test_read_standalone_worksheet(): - - class DummyWb(object): - - def get_sheet_by_name(self, value): - return None - - path = os.path.join(DATADIR, 'reader', 'sheet2.xml') - with open(path) as handle: - ws = read_worksheet(handle.read(), DummyWb(), - 'Sheet 2', {1: 'hello'}, {1: Style()}) - assert isinstance(ws, Worksheet) - eq_(ws.cell('G5').value, 'hello') - eq_(ws.cell('D30').value, 30) - eq_(ws.cell('K9').value, 0.09) - - -def test_read_standard_workbook(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - wb = load_workbook(path) - assert isinstance(wb, Workbook) - -def test_read_standard_workbook_from_fileobj(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - fo = open(path, mode = 'rb') - wb = load_workbook(fo) - assert isinstance(wb, Workbook) - -def test_read_worksheet(): - path = os.path.join(DATADIR, 'genuine', 'empty.xlsx') - wb = load_workbook(path) - sheet2 = wb.get_sheet_by_name('Sheet2 - Numbers') - assert isinstance(sheet2, Worksheet) - eq_('This is cell G5', sheet2.cell('G5').value) - eq_(18, sheet2.cell('D18').value) - - -def test_read_nostring_workbook(): - genuine_wb = os.path.join(DATADIR, 'genuine', 'empty-no-string.xlsx') - wb = load_workbook(genuine_wb) - assert isinstance(wb, Workbook) - -@raises(InvalidFileException) -def test_read_empty_file(): - - null_file = os.path.join(DATADIR, 'reader', 'null_file.xlsx') - wb = load_workbook(null_file) - -@raises(InvalidFileException) -def test_read_empty_archive(): - - null_file = os.path.join(DATADIR, 'reader', 'null_archive.xlsx') - wb = load_workbook(null_file) - -def test_read_dimension(): - - path = os.path.join(DATADIR, 'reader', 'sheet2.xml') - - with open(path) as handle: - - dimension = read_dimension(xml_source = handle.read()) - - eq_(('D', 1, 'K', 30), dimension) - -class TestReadWorkbookWithStyles(object): - - @classmethod - def setup_class(cls): - cls.genuine_wb = os.path.join(DATADIR, 'genuine', \ - 'empty-with-styles.xlsx') - wb = load_workbook(cls.genuine_wb) - cls.ws = wb.get_sheet_by_name('Sheet1') - - def test_read_general_style(self): - eq_(self.ws.cell('A1').style.number_format.format_code, - NumberFormat.FORMAT_GENERAL) - - def test_read_date_style(self): - eq_(self.ws.cell('A2').style.number_format.format_code, - NumberFormat.FORMAT_DATE_XLSX14) - - def test_read_number_style(self): - eq_(self.ws.cell('A3').style.number_format.format_code, - NumberFormat.FORMAT_NUMBER_00) - - def test_read_time_style(self): - eq_(self.ws.cell('A4').style.number_format.format_code, - NumberFormat.FORMAT_DATE_TIME3) - - def test_read_percentage_style(self): - eq_(self.ws.cell('A5').style.number_format.format_code, - NumberFormat.FORMAT_PERCENTAGE_00) diff --git a/tablib/packages/openpyxl3/tests/test_strings.py b/tablib/packages/openpyxl3/tests/test_strings.py deleted file mode 100644 index 7dbf17a..0000000 --- a/tablib/packages/openpyxl3/tests/test_strings.py +++ /dev/null @@ -1,68 +0,0 @@ -# file openpyxl/tests/test_strings.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os.path - -# 3rd party imports -from nose.tools import eq_ - -# package imports -from openpyxl.tests.helper import DATADIR -from openpyxl.workbook import Workbook -from openpyxl.writer.strings import create_string_table -from openpyxl.reader.strings import read_string_table - - -def test_create_string_table(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('B12').value = 'hello' - ws.cell('B13').value = 'world' - ws.cell('D28').value = 'hello' - table = create_string_table(wb) - eq_({'hello': 1, 'world': 0}, table) - - -def test_read_string_table(): - with open(os.path.join(DATADIR, 'reader', 'sharedStrings.xml')) as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'This is cell A1 in Sheet 1', 1: 'This is cell G5'}, string_table) - -def test_empty_string(): - with open(os.path.join(DATADIR, 'reader', 'sharedStrings-emptystring.xml')) as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'Testing empty cell', 1:''}, string_table) - -def test_formatted_string_table(): - with open(os.path.join(DATADIR, 'reader', 'shared-strings-rich.xml')) \ - as handle: - content = handle.read() - string_table = read_string_table(content) - eq_({0: 'Welcome', 1: 'to the best shop in town', - 2: " let's play "}, string_table) diff --git a/tablib/packages/openpyxl3/tests/test_style.py b/tablib/packages/openpyxl3/tests/test_style.py deleted file mode 100644 index 4c8962c..0000000 --- a/tablib/packages/openpyxl3/tests/test_style.py +++ /dev/null @@ -1,181 +0,0 @@ -# file openpyxl/tests/test_style.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -import os.path -import datetime - -# 3rd party imports -from nose.tools import eq_, assert_false, ok_ - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content, get_xml -from openpyxl.reader.style import read_style_table -from openpyxl.workbook import Workbook -from openpyxl.style import NumberFormat -from openpyxl.writer.styles import StyleWriter -from openpyxl.style import NumberFormat, Border, Color - - -class TestCreateStyle(object): - - @classmethod - def setup_class(cls): - now = datetime.datetime.now() - cls.workbook = Workbook() - cls.worksheet = cls.workbook.create_sheet() - cls.worksheet.cell(coordinate = 'A1').value = '12.34%' - cls.worksheet.cell(coordinate = 'B4').value = now - cls.worksheet.cell(coordinate = 'B5').value = now - cls.worksheet.cell(coordinate = 'C14').value = 'This is a test' - cls.worksheet.cell(coordinate = 'D9').value = '31.31415' - cls.worksheet.cell(coordinate = 'D9').style.number_format.format_code = \ - NumberFormat.FORMAT_NUMBER_00 - cls.writer = StyleWriter(cls.workbook) - - def test_create_style_table(self): - eq_(3, len(self.writer.style_table)) - - def test_write_style_table(self): - reference_file = os.path.join(DATADIR, 'writer', 'expected', 'simple-styles.xml') - assert_equals_file_content(reference_file, self.writer.write_table()) - -class TestStyleWriter(object): - - def setUp(self): - - self.workbook = Workbook() - self.worksheet = self.workbook.create_sheet() - - def test_no_style(self): - - w = StyleWriter(self.workbook) - eq_(0, len(w.style_table)) - - def test_nb_style(self): - - for i in range(1, 6): - self.worksheet.cell(row=1, column=i).style.font.size += i - w = StyleWriter(self.workbook) - eq_(5, len(w.style_table)) - - self.worksheet.cell('A10').style.borders.top = Border.BORDER_THIN - w = StyleWriter(self.workbook) - eq_(6, len(w.style_table)) - - def test_style_unicity(self): - - for i in range(1, 6): - self.worksheet.cell(row=1, column=i).style.font.bold = True - w = StyleWriter(self.workbook) - eq_(1, len(w.style_table)) - - def test_fonts(self): - - self.worksheet.cell('A1').style.font.size = 12 - self.worksheet.cell('A1').style.font.bold = True - w = StyleWriter(self.workbook) - w._write_fonts() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fonts count="2"><font><sz val="11" /><color theme="1" /><name val="Calibri" /><family val="2" /><scheme val="minor" /></font><font><sz val="12" /><color rgb="FF000000" /><name val="Calibri" /><family val="2" /><scheme val="minor" /><b /></font></fonts></styleSheet>') - - def test_fills(self): - - self.worksheet.cell('A1').style.fill.fill_type = 'solid' - self.worksheet.cell('A1').style.fill.start_color.index = Color.DARKYELLOW - w = StyleWriter(self.workbook) - w._write_fills() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><fills count="3"><fill><patternFill patternType="none" /></fill><fill><patternFill patternType="gray125" /></fill><fill><patternFill patternType="solid"><fgColor rgb="FF808000" /></patternFill></fill></fills></styleSheet>') - - def test_borders(self): - - self.worksheet.cell('A1').style.borders.top.border_style = Border.BORDER_THIN - self.worksheet.cell('A1').style.borders.top.color.index = Color.DARKYELLOW - w = StyleWriter(self.workbook) - w._write_borders() - eq_(get_xml(w._root), '<?xml version=\'1.0\' encoding=\'UTF-8\'?><styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><borders count="2"><border><left /><right /><top /><bottom /><diagonal /></border><border><left style="none"><color rgb="FF000000" /></left><right style="none"><color rgb="FF000000" /></right><top style="thin"><color rgb="FF808000" /></top><bottom style="none"><color rgb="FF000000" /></bottom><diagonal style="none"><color rgb="FF000000" /></diagonal></border></borders></styleSheet>') - - def test_write_cell_xfs_1(self): - - self.worksheet.cell('A1').style.font.size = 12 - w = StyleWriter(self.workbook) - ft = w._write_fonts() - nft = w._write_number_formats() - w._write_cell_xfs(nft, ft, {}, {}) - xml = get_xml(w._root) - ok_('applyFont="1"' in xml) - ok_('applyFillId="1"' not in xml) - ok_('applyBorder="1"' not in xml) - ok_('applyAlignment="1"' not in xml) - - def test_alignment(self): - self.worksheet.cell('A1').style.alignment.horizontal = 'center' - self.worksheet.cell('A1').style.alignment.vertical = 'center' - w = StyleWriter(self.workbook) - nft = w._write_number_formats() - w._write_cell_xfs(nft,{},{},{}) - xml = get_xml(w._root) - ok_('applyAlignment="1"' in xml) - ok_('horizontal="center"' in xml) - ok_('vertical="center"' in xml) - - -#def test_format_comparisions(): -# format1 = NumberFormat() -# format2 = NumberFormat() -# format3 = NumberFormat() -# format1.format_code = 'm/d/yyyy' -# format2.format_code = 'm/d/yyyy' -# format3.format_code = 'mm/dd/yyyy' -# assert not format1 < format2 -# assert format1 < format3 -# assert format1 == format2 -# assert format1 != format3 - - -def test_builtin_format(): - format = NumberFormat() - format.format_code = '0.00' - eq_(format.builtin_format_code(2), format._format_code) - - -def test_read_style(): - reference_file = os.path.join(DATADIR, 'reader', 'simple-styles.xml') - with open(reference_file, 'r') as handle: - content = handle.read() - style_table = read_style_table(content) - eq_(4, len(style_table)) - eq_(NumberFormat._BUILTIN_FORMATS[9], - style_table[1].number_format.format_code) - eq_('yyyy-mm-dd', style_table[2].number_format.format_code) - - -def test_read_cell_style(): - reference_file = os.path.join( - DATADIR, 'reader', 'empty-workbook-styles.xml') - with open(reference_file, 'r') as handle: - content = handle.read() - style_table = read_style_table(content) - eq_(2, len(style_table)) diff --git a/tablib/packages/openpyxl3/tests/test_theme.py b/tablib/packages/openpyxl3/tests/test_theme.py deleted file mode 100644 index b0f6f00..0000000 --- a/tablib/packages/openpyxl3/tests/test_theme.py +++ /dev/null @@ -1,37 +0,0 @@ -# file openpyxl/tests/test_theme.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports -import os.path - -# package imports -from openpyxl.tests.helper import DATADIR, assert_equals_file_content -from openpyxl.writer.theme import write_theme - - -def test_write_theme(): - content = write_theme() - assert_equals_file_content( - os.path.join(DATADIR, 'writer', 'expected', 'theme1.xml'), content) diff --git a/tablib/packages/openpyxl3/tests/test_workbook.py b/tablib/packages/openpyxl3/tests/test_workbook.py deleted file mode 100644 index 20191d2..0000000 --- a/tablib/packages/openpyxl3/tests/test_workbook.py +++ /dev/null @@ -1,148 +0,0 @@ -# file openpyxl/tests/test_workbook.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_, with_setup, raises -import os.path as osp - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.reader.excel import load_workbook -from openpyxl.namedrange import NamedRange -from openpyxl.shared.exc import ReadOnlyWorkbookException -from openpyxl.tests.helper import TMPDIR, clean_tmpdir, make_tmpdir - -import datetime - -def test_get_active_sheet(): - wb = Workbook() - active_sheet = wb.get_active_sheet() - eq_(active_sheet, wb.worksheets[0]) - - -def test_create_sheet(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - eq_(new_sheet, wb.worksheets[0]) - - -@raises(ReadOnlyWorkbookException) -def test_create_sheet_readonly(): - wb = Workbook() - wb._set_optimized_read() - wb.create_sheet() - - -def test_remove_sheet(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - wb.remove_sheet(new_sheet) - assert new_sheet not in wb.worksheets - - -def test_get_sheet_by_name(): - wb = Workbook() - new_sheet = wb.create_sheet() - title = 'my sheet' - new_sheet.title = title - found_sheet = wb.get_sheet_by_name(title) - eq_(new_sheet, found_sheet) - - -def test_get_index(): - wb = Workbook() - new_sheet = wb.create_sheet(0) - sheet_index = wb.get_index(new_sheet) - eq_(sheet_index, 0) - - -def test_get_sheet_names(): - wb = Workbook() - names = ['Sheet', 'Sheet1', 'Sheet2', 'Sheet3', 'Sheet4', 'Sheet5'] - for count in range(5): - wb.create_sheet(0) - actual_names = wb.get_sheet_names() - eq_(sorted(actual_names), sorted(names)) - - -def test_get_named_ranges(): - wb = Workbook() - eq_(wb.get_named_ranges(), wb._named_ranges) - - -def test_add_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - named_ranges_list = wb.get_named_ranges() - assert named_range in named_ranges_list - - -def test_get_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - found_named_range = wb.get_named_range('test_nr') - eq_(named_range, found_named_range) - - -def test_remove_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - wb.add_named_range(named_range) - wb.remove_named_range(named_range) - named_ranges_list = wb.get_named_ranges() - assert named_range not in named_ranges_list - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_add_local_named_range(): - wb = Workbook() - new_sheet = wb.create_sheet() - named_range = NamedRange('test_nr', [(new_sheet, 'A1')]) - named_range.local_only = True - wb.add_named_range(named_range) - dest_filename = osp.join(TMPDIR, 'local_named_range_book.xlsx') - wb.save(dest_filename) - - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_write_regular_date(): - - today = datetime.datetime(2010, 1, 18, 14, 15, 20, 1600) - - book = Workbook() - sheet = book.get_active_sheet() - sheet.cell("A1").value = today - dest_filename = osp.join(TMPDIR, 'date_read_write_issue.xlsx') - book.save(dest_filename) - - test_book = load_workbook(dest_filename) - test_sheet = test_book.get_active_sheet() - - eq_(test_sheet.cell("A1").value, today) - diff --git a/tablib/packages/openpyxl3/tests/test_worksheet.py b/tablib/packages/openpyxl3/tests/test_worksheet.py deleted file mode 100644 index 1894f1d..0000000 --- a/tablib/packages/openpyxl3/tests/test_worksheet.py +++ /dev/null @@ -1,258 +0,0 @@ -# file openpyxl/tests/test_worksheet.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# 3rd party imports -from nose.tools import eq_, raises, assert_raises - -# package imports -from openpyxl.workbook import Workbook -from openpyxl.worksheet import Worksheet, Relationship, flatten -from openpyxl.cell import Cell -from openpyxl.shared.exc import CellCoordinatesException, \ - SheetTitleException, InsufficientCoordinatesException, \ - NamedRangeException - - -class TestWorksheet(): - - @classmethod - def setup_class(cls): - cls.wb = Workbook() - - def test_new_worksheet(self): - ws = Worksheet(self.wb) - eq_(self.wb, ws._parent) - - def test_new_sheet_name(self): - self.wb.worksheets = [] - ws = Worksheet(self.wb, title = '') - eq_(repr(ws), '<Worksheet "Sheet1">') - - def test_get_cell(self): - ws = Worksheet(self.wb) - cell = ws.cell('A1') - eq_(cell.get_coordinate(), 'A1') - - @raises(SheetTitleException) - def test_set_bad_title(self): - Worksheet(self.wb, 'X' * 50) - - def test_set_bad_title_character(self): - assert_raises(SheetTitleException, Worksheet, self.wb, '[') - assert_raises(SheetTitleException, Worksheet, self.wb, ']') - assert_raises(SheetTitleException, Worksheet, self.wb, '*') - assert_raises(SheetTitleException, Worksheet, self.wb, ':') - assert_raises(SheetTitleException, Worksheet, self.wb, '?') - assert_raises(SheetTitleException, Worksheet, self.wb, '/') - assert_raises(SheetTitleException, Worksheet, self.wb, '\\') - - def test_worksheet_dimension(self): - ws = Worksheet(self.wb) - eq_('A1:A1', ws.calculate_dimension()) - ws.cell('B12').value = 'AAA' - eq_('A1:B12', ws.calculate_dimension()) - - def test_worksheet_range(self): - ws = Worksheet(self.wb) - xlrange = ws.range('A1:C4') - assert isinstance(xlrange, tuple) - eq_(4, len(xlrange)) - eq_(3, len(xlrange[0])) - - def test_worksheet_named_range(self): - ws = Worksheet(self.wb) - self.wb.create_named_range('test_range', ws, 'C5') - xlrange = ws.range('test_range') - assert isinstance(xlrange, Cell) - eq_(5, xlrange.row) - - @raises(NamedRangeException) - def test_bad_named_range(self): - ws = Worksheet(self.wb) - ws.range('bad_range') - - @raises(NamedRangeException) - def test_named_range_wrong_sheet(self): - ws1 = Worksheet(self.wb) - ws2 = Worksheet(self.wb) - self.wb.create_named_range('wrong_sheet_range', ws1, 'C5') - ws2.range('wrong_sheet_range') - - def test_cell_offset(self): - ws = Worksheet(self.wb) - eq_('C17', ws.cell('B15').offset(2, 1).get_coordinate()) - - def test_range_offset(self): - ws = Worksheet(self.wb) - xlrange = ws.range('A1:C4', 1, 3) - assert isinstance(xlrange, tuple) - eq_(4, len(xlrange)) - eq_(3, len(xlrange[0])) - eq_('D2', xlrange[0][0].get_coordinate()) - - def test_cell_alternate_coordinates(self): - ws = Worksheet(self.wb) - cell = ws.cell(row = 8, column = 4) - eq_('E9', cell.get_coordinate()) - - @raises(InsufficientCoordinatesException) - def test_cell_insufficient_coordinates(self): - ws = Worksheet(self.wb) - cell = ws.cell(row = 8) - - def test_cell_range_name(self): - ws = Worksheet(self.wb) - self.wb.create_named_range('test_range_single', ws, 'B12') - assert_raises(CellCoordinatesException, ws.cell, 'test_range_single') - c_range_name = ws.range('test_range_single') - c_range_coord = ws.range('B12') - c_cell = ws.cell('B12') - eq_(c_range_coord, c_range_name) - eq_(c_range_coord, c_cell) - - def test_garbage_collect(self): - ws = Worksheet(self.wb) - ws.cell('A1').value = '' - ws.cell('B2').value = '0' - ws.cell('C4').value = 0 - ws.garbage_collect() - eq_(ws.get_cell_collection(), [ws.cell('B2'), ws.cell('C4')]) - - def test_hyperlink_relationships(self): - ws = Worksheet(self.wb) - eq_(len(ws.relationships), 0) - - ws.cell('A1').hyperlink = "http://test.com" - eq_(len(ws.relationships), 1) - eq_("rId1", ws.cell('A1').hyperlink_rel_id) - eq_("rId1", ws.relationships[0].id) - eq_("http://test.com", ws.relationships[0].target) - eq_("External", ws.relationships[0].target_mode) - - ws.cell('A2').hyperlink = "http://test2.com" - eq_(len(ws.relationships), 2) - eq_("rId2", ws.cell('A2').hyperlink_rel_id) - eq_("rId2", ws.relationships[1].id) - eq_("http://test2.com", ws.relationships[1].target) - eq_("External", ws.relationships[1].target_mode) - - @raises(ValueError) - def test_bad_relationship_type(self): - rel = Relationship('bad_type') - - def test_append_list(self): - ws = Worksheet(self.wb) - - ws.append(['This is A1', 'This is B1']) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is B1', ws.cell('B1').value) - - def test_append_dict_letter(self): - ws = Worksheet(self.wb) - - ws.append({'A' : 'This is A1', 'C' : 'This is C1'}) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is C1', ws.cell('C1').value) - - def test_append_dict_index(self): - ws = Worksheet(self.wb) - - ws.append({0 : 'This is A1', 2 : 'This is C1'}) - - eq_('This is A1', ws.cell('A1').value) - eq_('This is C1', ws.cell('C1').value) - - @raises(TypeError) - def test_bad_append(self): - ws = Worksheet(self.wb) - ws.append("test") - - def test_append_2d_list(self): - - ws = Worksheet(self.wb) - - ws.append(['This is A1', 'This is B1']) - ws.append(['This is A2', 'This is B2']) - - vals = ws.range('A1:B2') - - eq_((('This is A1', 'This is B1'), - ('This is A2', 'This is B2'),), flatten(vals)) - - def test_rows(self): - - ws = Worksheet(self.wb) - - ws.cell('A1').value = 'first' - ws.cell('C9').value = 'last' - - rows = ws.rows - - eq_(len(rows), 9) - - eq_(rows[0][0].value, 'first') - eq_(rows[-1][-1].value, 'last') - - def test_cols(self): - - ws = Worksheet(self.wb) - - ws.cell('A1').value = 'first' - ws.cell('C9').value = 'last' - - cols = ws.columns - - eq_(len(cols), 3) - - eq_(cols[0][0].value, 'first') - eq_(cols[-1][-1].value, 'last') - - def test_auto_filter(self): - ws = Worksheet(self.wb) - ws.auto_filter = ws.range('a1:f1') - assert ws.auto_filter == 'A1:F1' - - ws.auto_filter = '' - assert ws.auto_filter is None - - ws.auto_filter = 'c1:g9' - assert ws.auto_filter == 'C1:G9' - - def test_freeze(self): - ws = Worksheet(self.wb) - ws.freeze_panes = ws.cell('b2') - assert ws.freeze_panes == 'B2' - - ws.freeze_panes = '' - assert ws.freeze_panes is None - - ws.freeze_panes = 'c5' - assert ws.freeze_panes == 'C5' - - ws.freeze_panes = ws.cell('A1') - assert ws.freeze_panes is None - diff --git a/tablib/packages/openpyxl3/tests/test_write.py b/tablib/packages/openpyxl3/tests/test_write.py deleted file mode 100644 index 74363cb..0000000 --- a/tablib/packages/openpyxl3/tests/test_write.py +++ /dev/null @@ -1,203 +0,0 @@ -# file openpyxl/tests/test_write.py - -# Copyright (c) 2010 openpyxl -# -# 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. -# -# @license: http://www.opensource.org/licenses/mit-license.php -# @author: Eric Gazoni - -# Python stdlib imports - -from io import StringIO -import os.path - -# 3rd party imports -from nose.tools import eq_, with_setup, raises - -# package imports -from openpyxl.tests.helper import TMPDIR, DATADIR, \ - assert_equals_file_content, clean_tmpdir, make_tmpdir -from openpyxl.workbook import Workbook -from openpyxl.reader.excel import load_workbook -from openpyxl.writer.excel import save_workbook, save_virtual_workbook, \ - ExcelWriter -from openpyxl.writer.workbook import write_workbook, write_workbook_rels -from openpyxl.writer.worksheet import write_worksheet, write_worksheet_rels -from openpyxl.writer.strings import write_string_table -from openpyxl.writer.styles import StyleWriter - - -@with_setup(setup = make_tmpdir, teardown = clean_tmpdir) -def test_write_empty_workbook(): - wb = Workbook() - dest_filename = os.path.join(TMPDIR, 'empty_book.xlsx') - save_workbook(wb, dest_filename) - assert os.path.isfile(dest_filename) - - -def test_write_virtual_workbook(): - old_wb = Workbook() - saved_wb = save_virtual_workbook(old_wb) - new_wb = load_workbook(StringIO(saved_wb)) - assert new_wb - - -def test_write_workbook_rels(): - wb = Workbook() - content = write_workbook_rels(wb) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'workbook.xml.rels'), content) - - -def test_write_workbook(): - wb = Workbook() - content = write_workbook(wb) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'workbook.xml'), content) - - -def test_write_string_table(): - table = {'hello': 1, 'world': 2, 'nice': 3} - content = write_string_table(table) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sharedStrings.xml'), content) - - -def test_write_worksheet(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1.xml'), content) - - -def test_write_hidden_worksheet(): - wb = Workbook() - ws = wb.create_sheet() - ws.sheet_state = ws.SHEETSTATE_HIDDEN - ws.cell('F42').value = 'hello' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1.xml'), content) - - -def test_write_formula(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = 10 - ws.cell('F2').value = 32 - ws.cell('F3').value = '=F1+F2' - content = write_worksheet(ws, {}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_formula.xml'), content) - - -def test_write_style(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = '13%' - style_id_by_hash = StyleWriter(wb).get_style_by_hash() - content = write_worksheet(ws, {}, style_id_by_hash) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_style.xml'), content) - - -def test_write_height(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F1').value = 10 - ws.row_dimensions[ws.cell('F1').row].height = 30 - content = write_worksheet(ws, {}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_height.xml'), content) - - -def test_write_hyperlink(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('A1').value = "test" - ws.cell('A1').hyperlink = "http://test.com" - content = write_worksheet(ws, {'test': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_hyperlink.xml'), content) - - -def test_write_hyperlink_rels(): - wb = Workbook() - ws = wb.create_sheet() - eq_(0, len(ws.relationships)) - ws.cell('A1').value = "test" - ws.cell('A1').hyperlink = "http://test.com/" - eq_(1, len(ws.relationships)) - ws.cell('A2').value = "test" - ws.cell('A2').hyperlink = "http://test2.com/" - eq_(2, len(ws.relationships)) - content = write_worksheet_rels(ws, 1) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_hyperlink.xml.rels'), content) - - -def test_hyperlink_value(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('A1').hyperlink = "http://test.com" - eq_("http://test.com", ws.cell('A1').value) - ws.cell('A1').value = "test" - eq_("test", ws.cell('A1').value) - -def test_write_auto_filter(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.auto_filter = 'A1:F1' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_auto_filter.xml'), content) - -def test_freeze_panes_horiz(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'A4' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_horiz.xml'), content) - -def test_freeze_panes_vert(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'D1' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_vert.xml'), content) - pass - -def test_freeze_panes_both(): - wb = Workbook() - ws = wb.create_sheet() - ws.cell('F42').value = 'hello' - ws.freeze_panes = 'D4' - content = write_worksheet(ws, {'hello': 0}, {}) - assert_equals_file_content(os.path.join(DATADIR, 'writer', 'expected', \ - 'sheet1_freeze_panes_both.xml'), content) - - |
