各位高人:
大家好。小弟最近在使用 Python 读取 Excel 数据,然后写入到另一个 sheet 时,遇到个问题,想请教一下各位朋友。
详细请看这里:
环境: Python 2.7 和
openpyxl
目标: 将 sheet 1 里面的几个 日本汽车公司 筛选出来,写入到 sheet 2 里面。详见这里图片。
实际上,我从代码上已经实现了这一效果。但问题是,感觉
自己在 ”写入 sheet 2” 时,使用的方法太笨拙:只会一列、 一列
的写入,这样使用了 三个for循环 才 ”按列” 写入到 sheet 2 里面。
问题: 现在就是想请教一下各位,怎样可以逐行写入,少用几个 for 循环来写入 sheet 2 ?
具体请看下面的完整代码。
下面贴上完整的代码以及里面相应的注解,已调试通过,可以实现效果。
import openpyxl
my_excel = openpyxl.load_workbook("f:\\456.xlsx")
my_sheet = my_excel.worksheets[0]
my_sheet_2 = my_excel.worksheets[1]
fields = []
data = []
tmp_list = []
[color=#0000FF]# 下面这里是先从 sheet 1 获取表头的三个字段 "ID", "Company", "Country",保存到 名为 fileds 的列表里面。[/color]
for i in range(1, my_sheet.max_column + 1):
aa = str(my_sheet.cell(row = 1, column = i).value)
fields.append(aa)
print fields
print "\n"
[color=#0000FF]# 下面这里是先从 sheet 1 读取表头之外的所有数据(即汽车公司的 ID,公司名称 和 所属国家),保存到 名为 data 的列表里面。[/color]
for j in range(2, my_sheet.max_row + 1):
tmp_list = []
for k in range(1, my_sheet.max_column + 1):
bb = str(my_sheet.cell(row = j, column = k).value)
tmp_list.append(bb)
data.append(tmp_list)
print data
# 下面这里是从刚刚保存的 data 列表里面,筛选出 日本汽车公司的 数据,先保存到名为 MIG 的列表里面。
MIG = []
for iterm in data:
if ('Japan' in iterm[2]):
MIG.append(iterm)
print MIG
# 下面是,向 sheet 2 先写入表头 “ID”,“Company” 和 “Country” 这三个字段
for i in range(1,4):
my_sheet_2.cell(row = 1, column = i).value = my_sheet.cell(row = 1, column = i).value
#
下面,使用三个 for 循环,按列,将 MIG 里面的数据按列写入 sheet 2 里面。现在就是这里感觉太笨拙,使用了三个 for 循环、按列写入。能否有更简单的语句来实现?
for i in range(1,5):
my_sheet_2.cell(row = i + 1, column = 1).value = MIG[i-1][0]
for i in range(1,5):
my_sheet_2.cell(row = i + 1, column = 2).value = MIG[i-1][1]
for i in range(1,5):
my_sheet_2.cell(row = i + 1, column = 3).value = MIG[i-1][2]
my_excel.save('f:\\456.xlsx')