~ubuntu-branches/ubuntu/wily/openpyxl/wily-proposed

« back to all changes in this revision

Viewing changes to openpyxl/reader/iter_worksheet.py

  • Committer: Package Import Robot
  • Author(s): Yaroslav Halchenko
  • Date: 2012-04-12 11:20:11 UTC
  • mfrom: (1.1.7)
  • Revision ID: package-import@ubuntu.com-20120412112011-rsgvbh5353dfiwz6
Tags: 1.5.8-1
* Fresh upstream release
  - fixes unittests failures in upcoming pandas 0.7.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
116
116
 
117
117
        return res
118
118
 
119
 
def iter_rows(workbook_name, sheet_name, xml_source, range_string='', row_offset=0, column_offset=0):
 
119
def iter_rows(workbook_name, sheet_name, xml_source, shared_date, string_table, range_string='', row_offset=0, column_offset=0):
120
120
 
121
121
    archive = get_archive_file(workbook_name)
122
122
 
130
130
        max_col = column_index_from_string(max_col) + 1
131
131
        max_row += 6
132
132
 
133
 
    try:
134
 
        string_table = read_string_table(archive.read(ARC_SHARED_STRINGS))
135
 
    except KeyError:
136
 
        string_table = {}
137
 
 
138
133
    style_table = read_style_table(archive.read(ARC_STYLE))
139
134
 
140
135
    source.seek(0)
141
136
    p = iterparse(source)
142
137
 
143
 
    return get_squared_range(p, min_col, min_row, max_col, max_row, string_table, style_table)
 
138
    return get_squared_range(p, min_col, min_row, max_col, max_row, string_table, style_table, shared_date)
144
139
 
145
140
 
146
141
def get_rows(p, min_column=MIN_COLUMN, min_row=MIN_ROW, max_column=MAX_COLUMN, max_row=MAX_ROW):
202
197
 
203
198
    return dict([(column, RawCell(row, column, '%s%s' % (column, row), MISSING_VALUE, TYPE_NULL, None, None)) for column in columns])
204
199
 
205
 
def get_squared_range(p, min_col, min_row, max_col, max_row, string_table, style_table):
 
200
def get_squared_range(p, min_col, min_row, max_col, max_row, string_table, style_table, shared_date):
206
201
 
207
202
    expected_columns = [get_column_letter(ci) for ci in xrange(min_col, max_col)]
208
203
 
241
236
                    elif cell.data_type == Cell.TYPE_BOOL:
242
237
                        cell = cell._replace(internal_value=cell.internal_value == '1')
243
238
                    elif cell.is_date:
244
 
                        cell = cell._replace(internal_value=SHARED_DATE.from_julian(float(cell.internal_value)))
 
239
                        cell = cell._replace(internal_value=shared_date.from_julian(float(cell.internal_value)))
245
240
                    elif cell.data_type == Cell.TYPE_NUMERIC:
246
241
                        cell = cell._replace(internal_value=float(cell.internal_value))
247
242
                    elif cell.data_type in(Cell.TYPE_INLINE, Cell.TYPE_FORMULA_CACHE_STRING):
260
255
class IterableWorksheet(Worksheet):
261
256
 
262
257
    def __init__(self, parent_workbook, title, workbook_name,
263
 
            sheet_codename, xml_source):
 
258
            sheet_codename, xml_source, string_table):
264
259
 
265
260
        Worksheet.__init__(self, parent_workbook, title)
266
261
        self._workbook_name = workbook_name
267
262
        self._sheet_codename = sheet_codename
268
263
        self._xml_source = xml_source
 
264
        self._string_table = string_table
269
265
 
270
266
        min_col, min_row, max_col, max_row = read_dimension(xml_source=xml_source)
271
267
 
273
269
        self._max_column = max_col
274
270
        self._dimensions = '%s%s:%s%s' % (min_col, min_row, max_col, max_row)
275
271
 
 
272
        self._shared_date = SharedDate(base_date=parent_workbook.excel_base_date)
 
273
 
276
274
 
277
275
    def iter_rows(self, range_string='', row_offset=0, column_offset=0):
278
276
        """ Returns a squared range based on the `range_string` parameter, 
296
294
                         xml_source=self._xml_source,
297
295
                         range_string=range_string,
298
296
                         row_offset=row_offset,
299
 
                         column_offset=column_offset)
 
297
                         column_offset=column_offset,
 
298
                         shared_date=self._shared_date,
 
299
                         string_table=self._string_table)
300
300
 
301
301
    def cell(self, *args, **kwargs):
302
302
        raise NotImplementedError("use 'iter_rows()' instead")