python编程快速上手 12.4项目:从电子表格中读取数据

原始数据可从 http://nostarch.com/automatestuff/ 下载。该站可下载《python编程快速上手——让繁琐工作自动化》一书中的代码及数据包,以方便练习。
参考如下代码:

import openpyxl, pprint
wb = openpyxl.load_workbook('c:\censuspopdata.xlsx')
sheet = wb['Population by Census Tract']

txtfile = open('c:\dell\jieg.txt', 'w', encoding='utf-8')
neir = '县名'.ljust(25) + '户口区数量'.ljust(15) + '人口数量'.ljust(25) + '\n'
txtfile.write(neir)

rows = sheet.max_row  #取得最大行数
cols = sheet.max_column  #取得最大列数
print(rows,cols)
county = []
for i in range(2, rows + 1) :  #从第二行(EXCEL表中第一行是列标头)开始取值一直取到最后一行。range()函数不包含rows本身,因此要加1
    dqname = sheet.cell(row = i, column = 3).value  #取得当前表第三列的即县的名称
    county.append(dqname)

counset = set(county) #利用集合的去重功能去重

coundic = {}

print('正在统计数据...')

for hk in counset :  #遍历所有县名
    hkq = 0
    pop = 0
    for ccell in range(2, rows + 1) :   # 遍历所有行
        if sheet.cell(row = ccell, column = 3).value == hk :  #判断当前行的县名跟正在遍历有县名相符时
            hkq += 1
            pop += sheet.cell(row = ccell, column = 4).value
    coundic.setdefault(hk,[hkq,pop])

    neir = hk.ljust(25) + str(hkq).rjust(15) + str(pop).rjust(25)
    txtfile.write(neir)
    txtfile.write('\n')
neir = '县数:'+str(len(counset))+';户口区数量:'+str(hkq)+';人口数量:'+str(pop)
txtfile.close()
print('统计完成,输出数据...')
pprint.pprint(coundic)
print('输出完成')

经测试无误。

你可能感兴趣的:(python,开发语言)