@@ -48,8 +48,9 @@ def read_excel(path_or_buf, sheetname, kind=None, **kwds):
48
48
parsed : DataFrame
49
49
DataFrame from the passed in Excel file
50
50
"""
51
- return ExcelFile (path_or_buf ,kind = kind ).parse (sheetname = sheetname ,
52
- kind = kind , ** kwds )
51
+ return ExcelFile (path_or_buf , kind = kind ).parse (sheetname = sheetname ,
52
+ kind = kind , ** kwds )
53
+
53
54
54
55
class ExcelFile (object ):
55
56
"""
@@ -86,8 +87,8 @@ def parse(self, sheetname, header=0, skiprows=None, skip_footer=0,
86
87
87
88
Parameters
88
89
----------
89
- sheetname : string
90
- Name of Excel sheet
90
+ sheetname : string or integer
91
+ Name of Excel sheet or the page number of the sheet
91
92
header : int, default 0
92
93
Row to use for the column labels of the parsed DataFrame
93
94
skiprows : list-like
@@ -117,27 +118,20 @@ def parse(self, sheetname, header=0, skiprows=None, skip_footer=0,
117
118
parsed : DataFrame
118
119
DataFrame parsed from the Excel file
119
120
"""
120
-
121
- # has_index_names: boolean, default False
122
- # True if the cols defined in index_col have an index name and are
123
- # not in the header
124
121
has_index_names = False # removed as new argument of API function
125
122
126
123
skipfooter = kwds .pop ('skipfooter' , None )
127
124
if skipfooter is not None :
128
125
skip_footer = skipfooter
129
126
130
- return self ._parse_excel (sheetname , header = header ,
131
- skiprows = skiprows , index_col = index_col ,
132
- has_index_names = has_index_names ,
133
- parse_cols = parse_cols ,
134
- parse_dates = parse_dates ,
135
- date_parser = date_parser ,
136
- na_values = na_values ,
137
- thousands = thousands ,
138
- chunksize = chunksize ,
139
- skip_footer = skip_footer ,
140
- ** kwds )
127
+ return self ._parse_excel (sheetname , header = header , skiprows = skiprows ,
128
+ index_col = index_col ,
129
+ has_index_names = has_index_names ,
130
+ parse_cols = parse_cols ,
131
+ parse_dates = parse_dates ,
132
+ date_parser = date_parser , na_values = na_values ,
133
+ thousands = thousands , chunksize = chunksize ,
134
+ skip_footer = skip_footer , ** kwds )
141
135
142
136
def _should_parse (self , i , parse_cols ):
143
137
@@ -171,20 +165,22 @@ def _excel2num(x):
171
165
else :
172
166
return i in parse_cols
173
167
174
- def _parse_excel (self , sheetname , header = 0 , skiprows = None ,
175
- skip_footer = 0 , index_col = None , has_index_names = None ,
176
- parse_cols = None , parse_dates = False , date_parser = None ,
177
- na_values = None , thousands = None , chunksize = None ,
178
- ** kwds ):
168
+ def _parse_excel (self , sheetname , header = 0 , skiprows = None , skip_footer = 0 ,
169
+ index_col = None , has_index_names = None , parse_cols = None ,
170
+ parse_dates = False , date_parser = None , na_values = None ,
171
+ thousands = None , chunksize = None , ** kwds ):
179
172
from xlrd import (xldate_as_tuple , XL_CELL_DATE ,
180
173
XL_CELL_ERROR , XL_CELL_BOOLEAN )
181
174
182
175
datemode = self .book .datemode
183
- sheet = self .book .sheet_by_name (sheetname )
176
+ if isinstance (sheetname , basestring ):
177
+ sheet = self .book .sheet_by_name (sheetname )
178
+ else : # assume an integer if not a string
179
+ sheet = self .book .sheet_by_index (sheetname )
184
180
185
181
data = []
186
182
should_parse = {}
187
- for i in range (sheet .nrows ):
183
+ for i in xrange (sheet .nrows ):
188
184
row = []
189
185
for j , (value , typ ) in enumerate (izip (sheet .row_values (i ),
190
186
sheet .row_types (i ))):
@@ -225,7 +221,7 @@ def _parse_excel(self, sheetname, header=0, skiprows=None,
225
221
226
222
@property
227
223
def sheet_names (self ):
228
- return self .book .sheet_names ()
224
+ return self .book .sheet_names ()
229
225
230
226
231
227
def _trim_excel_header (row ):
0 commit comments