Python – 读取Excel文件并将输出打印到另一个文件

我有一个2列的Excel文件。 左列中有一些标签按datesorting。 对于每个date,标签列表会与右侧的一些值一起出现。 我需要阅读每个date,find一些特定的标签,并相应地打印值。 我已经发布了原始文件的摘录,以便您了解它的外观。

Row Label 1 Row Label 2 7/21/2015 123 Label 1 10.5 Label 2 20.6 [.....] 15 Label 5 25.9 Label 6 30.5 [.....] 544 7/22/2015 456 Label 1 15.8 Label 2 52.8 [.....] 87 Label 5 99 Label 6 55 Goes on.... 

现在,您可以看到上面的内容,首先需要finddate,然后在右侧列中只打印标签1,2和6以及它们的值。 这些标签以不同的值为每个date重复。 excel有这种文本的1000行,我需要打印每个date,其次是这些标签和它们各自的值。

输出应该是这样的。

 7/21/2015 Label 1 10.5 Label 2 20.6 Label 6 30.5 

我很新的python,我看到一些使用XLRD的职位。 我不知道如何解决这个问题,但如果有人能帮助我,这将是伟大的! 任何forms的帮助是赞赏:)

下面的脚本应该让你开始。 它使用openpyxl库来读取Excel电子表格。

 import openpyxl wb = openpyxl.Workbook() wb = openpyxl.load_workbook(filename='input.xlsx') ws = wb.active for row in range(2, ws.get_highest_row() + 1): row_label_1 = ws['A%d' % row].value row_label_2 = ws['B%d' % row].value if row_label_1.find("/") != -1: # Simple test for date print row_label_1 elif row_label_1 in ["Label 1","Label 2","Label 6"]: print "%-20s %s" % (row_label_1, row_label_2) 

testing使用Python 2.7

下面的脚本使用xlrd,它只能在扩展名为“.xls”的旧版excel文件上运行。 对于'.xlsx'types的excel文件,openpyxl将会工作。

另外下面的例子假定第一列中的所有数据都是数据types为TEXT的。 否则可以修改下面的单元格数据types。

用Python 2.7testing

 import xlrd header_column = 0 value_column = 1 accepted_labels = ['Label 1', 'Label 2', 'Label 6'] output = {} output_child = {} with xlrd.open_workbook("C:\\temp\\book1.xls") as work_book: work_sheet = work_book.sheet_by_index(0) num_rows = work_sheet.nrows - 1 current_row = 0 # loop through rows while current_row < num_rows: if 'label' not in work_sheet.cell_value(current_row, header_column).lower(): date_header_value = work_sheet.cell_value(current_row, header_column) current_row += 1 while 'label' in work_sheet.cell_value(current_row, header_column).lower() and current_row < num_rows: if work_sheet.cell_value(current_row, header_column) in accepted_labels: output_child[work_sheet.cell_value(current_row, header_column)] = work_sheet.cell_value(current_row, value_column) current_row += 1 output[date_header_value] = output_child current_row -= 1 current_row += 1 print output 
 C:>pip install pandas 

在你像上面那样安装pandas(python数据分析库)之后

 import pandas as pd df = pd.read_excel(filename, sheetname, skiprows=[0, 1], header=None, index_col=0) df.index.name = '7/21/2015' df.columns = ['Data'] writer = pd.ExcelWriter('result.xlsx', datetime_format='yyyy-mm-dd') df.to_excel(writer) 

如果你想处理xls,csv和其他许多types的数据集文件,我强烈推荐pandas。