python 第6册 辅助Excel 003

--用教授的方式学习。

003使用字典拆分多个工作簿

此案例主要通过使用Python 语言的字典,从而实现根据特定的分类原则将一个工作簿(的工作表数据)拆分成多个工作簿(的工作表数据)。当运行此案例的 Python 代码(A309.py 文件)之后,将根据录取院校把"录取表.xlsx"文件的录取表数据拆分到各个录取院校工作簿(各个 Excel 文件)中,效果分别如图003-1 和图003-2所示。

A309.py 文件Python的代码如下:

python 复制代码
import openpyxl
#读取"录取表.xlsx"文件
myBook = openpyx]. load_
_workbook('录取表.xlsx')
mySheet = myBook['录取表']
#按行获取录取表(mySheet)的单元格数据(myRange)
myRange = list (mySheet. values)
#创建空白字典(myDict)
myDict = {}
#从录取表(myRange)的第4行开始循环(到最后一行)
for myRow in myRange| 3:]:
   井如果在字典(myDict)中存在某录取院校(myRow[ 0]),#则直接在某录取院校(myRow[ 0])中   添加考生([myRow])
   if myRow[0] in myDict. keys():
      myDict[myRow[0]] += [myRow]#否则创建新录取院校
   else:
      myDict[myRow[0]] = [myRow]
#循环字典(nyDict)的成员
for myKey, myValue in myDict. items():
   #创建新工作簿(myNewBook)
   myNewBook = openpyxl.Workbook ()
  myNewSheet = myNewBook. active
   #在新工作表(myNewSheet)中添加表头(录取院校、专业、考生姓名、总分)
   myNewSheet. append(myRange[2])
   #在新工作表(myNewSheet)中添加键名(录取院校)下的多个键值(考生)
   for myRow in myValue:
      myNewSheet. append (myRow)
   myNewSheet. title= myKey +'录取表'
   #保存拆分之后(各个录取院校)的工作簿(myNewBook),或者说保存各个 Excel 文件myPath='结果表-'+ myKey +'录取表.xlsx'
   myNewBook. save(myPath)

在上面这段代码中,字典(myDict)的作用就是以"录取院校"作为键名,在该键名下添加键值(即添加录取院校录取的多个考生),从而实现对所有考生进行归类。在此案例中,当字典(myDict)添加了考生以后,其保存的考生内容如下:

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| {北京大学 :[(北京大学 ,材料化学 ,李洪',738),(北京大学 ,材料化学,'常金龙',718),('北京大学,材料化学 ,李科技',712),('北京大学 ,金融学',段成全 ,722)],清华大学':[('清华大学 ,•环境工程,易来江',727),('清华大学,'车辆工程,'张振中',740),('清华大学,'车辆工程,'田彬',732),('清华大学','软件工程,'陈吉文',718)],'浙江大学':[(浙江大学,'生物医学','刘康华',695),('浙江大学,'机械工程','辛国明,699),('浙江大学','机械工程','李建平',696),('浙江大学','生物医学','黄明会',703),('浙江大学,生物医学, '张华康',692)],'武汉大学':[('武汉大学 ,'口腔医学','杜建国',701),('武汉大学','口腔医学','何友大',692),(武汉大学',城乡规划学','万冬',701)]} |

在创建多个工作簿时,则根据键名(录取院校)在每个工作簿的活动工作表中直接添加该键名(录取院校)的所有键值(即录取院校录取的多个考生),最后将每个工作簿保存为Excel 文件。在此案例中,myDict[myRow[0]]=[myRow]也可以写成 myDict. update({myRow[O]:[myRow]})。

---end

相关推荐
河山入梦来10 小时前
Excel表的导入与导出
excel
wtsolutions19 小时前
Excel-to-JSON插件专业版功能详解:让Excel数据转换更灵活
json·excel·excel-to-json·wtsolutions·专业版
梦幻通灵20 小时前
Excel分组计算求和的两种实现方案
前端·excel
莫负初1 天前
Excel使用VBA批量计算指定列的中位数和标准差并筛选指定列数据
数据分析·自动化·excel·vba·方差·标准差
杜子腾dd1 天前
17.Excel:实用的 VBA 自动化程序
数据分析·自动化·excel
是孑然呀2 天前
【小记】excel vlookup一对多匹配
excel
chaodaibing2 天前
pandas读取pymysql和解析excel的一系列问题(版本不匹配)
excel·pandas
沉到海底去吧Go2 天前
【身份证识别表格】批量识别身份证扫描件或照片保存为Excel表格,怎么大批量将身份证图片转为excel表格?基于WPF和腾讯OCR的识别方案
ocr·wpf·excel·身份证识别表格·批量扫描件身份证转表格·图片识别表格·图片识别excel表格
a GISer doctor2 天前
EXCEL中嵌入其他表格等文件
excel
yngsqq3 天前
CAD属性图框值与Excel联动(CAD块属性导出Excel、excel更新CAD块属性)——CAD c#二次开发
excel