2017-09-19 32 views
-1

我有一个用于通过python openpyxl读取数据的Excel工作表...所以在我的脚本中,我的值被硬编码为ws ['E2':' AB3']作为AB3是最后一项要读...但现在工作表被更新,现在最后一个单元格坐标是AR3 ...我如何使代码通用,以便每次工作表更新代码应该工作.. ? 注(我找出行和列板总数...我能做些什么)如何将工作表的范围作为变量

rows = ws.max_row 
column = ws.max_column 
print(rows,column) 
column_letter = get_column_letter(column) 
print(column_letter) 
+0

请再具体些,你希望它自动加载特定的列类型或只能够装载所有的列? –

+0

加载所有的列直到最后 – Abhishek

回答

-1

如果你只是希望加载的所有列,使用熊猫,它的简单,并具有更多的功能。

import pandas as pd 

# Load in the Excel file (sheetname is optional, defaults to first sheet) 
df = pd.read_excel('/some/file/path/excel_file_name.xlsx', sheetname='Sheetx') 

# Check the first 5 rows 
print(df.head()) 
+0

我怎样才能将工作表的范围作为WS ['F2':'A03']到WS ['F2':'AR3']我将列号转换为列字母,所以为44它是AR,所以我做了这个行= ws.max_row column = ws.max_column print(rows,column) column_letter = get_column_letter(column) print(column_letter)//打印AR count = column_letter //将AR放入计数变量 fatrows = ws ['F2':'count3'] ...但它不工作我怎么能使它成为可能....请帮助我 – Abhishek

+0

openpyxl或xlrd(由Pandas内部使用)给用户更多的控制了解如何读取工作表。 –

0

问题:我怎样才能使代码通用

注意:我认为你总是希望在 'E2' 开始。

from openpyxl.utils import range_boundaries 
# Define only start 'E2',  
# all max_* values, last Row, Column, are returned by Default 
min_col, min_row, max_col, max_row = range_boundaries('E2') 

# Iterate all Rows, starting at min_row == 2 
for columns in worksheet.iter_rows(min_col=min_col, min_row=min_row, max_col=max_col, max_row=max_row): 
    # Iterate all Columns, starting at min_col == 'E' 
    for cell in columns: 
     print('%s: cell.value=%s' % (cell, cell.value))