Python借助Openpyxl读写excel2007 +

来源:互联网 发布:苏州嘉图软件 编辑:程序博客网 时间:2024/06/06 17:59
虽说自己是学计算机的,有时候觉得还不如人家没有学计算机的会编程,最近心情比较down,感觉什么也不如人家,心里有点失调,but 还得硬着头皮自己走下去并且要对自己有个交代。不罗嗦了说说这几天的菜鸟级别吧。

       对于Python这几天只接触了一下Openpyxl进行excel2007的数据处理,Python的其他的功能还没有尝试,不过感觉Python应该蛮可爱的,据说不是学计算机的都很容易学会的。~~~~(>_<)~~~~ 我又开始怀疑自己的智商了,我到底擅长什么呢?我活了20多年也没有发现。

       程序还在跑着,我要确定对了在完全贴上来,争取把我搞明白的都告诉大家,O(∩_∩)O哈哈~just wait a minute 不要浮躁,告诉自己要平静,平静才能获得提高

       终于跑完了,贴上,该程序从一个已经存在的excel表格haggle.xlsx中读取2列数据分别为列1、2统计列1中的同一个数据对应列2多少个不同的数据并将其写到一个新的excel表格中名为result.xlsx

     比如:下表则0对应了1,2两个不同的数据,而1对应3这1个不同的数据,因此输出结果为

列1列201010213

0211
[python] view plaincopy
  1. ''''' 
  2. Created on 2012-11-15 
  3.  
  4. @author: Administrator 
  5. '''  
  6.   
  7. from openpyxl import load_workbook  
  8. from openpyxl import Workbook  
  9. from openpyxl.writer.excel import ExcelWriter   
  10. wb = load_workbook(filename = r'haggle.xlsx')#获取一个已经存在的excel文件wb  
  11. ws=wb.get_sheet_by_name("Sheet4")#打开该文件wb需要用到的worksheet即ws  
  12. wb1=Workbook()#新建立一个工作簿wb1  
  13. ewb1=ExcelWriter(workbook=wb1)#新建一个ExcelWriter,用来写wb1  
  14. dest_filename=r'result.xlsx'#wb1的名字  
  15. ws1=wb1.worksheets[0]#取得wb1的第一个工作表ws1  
  16. ws1.title="socialrange"#指定ws1名字为socialrange  
  17. #for i in range(1,36):  
  18. #ws2=wb.get_sheet_by_name("Sheet5")  
  19. for i in range(0,36):#此处遍历列1寻找0-35  
  20.     li=[]#给每个数建立一个list表  
  21.     for row_num in xrange(0,213824):#表示遍历的行数  
  22.         c2=ws.cell(row=row_num,column=2).value#获取列2对应于excel中的C列的数据  
  23.         c3=ws.cell(row=row_num,column=3).value#获取列3对应于excel中的D列的数据  
  24.         #对于每个i遍历列C,找出C列跟i相同的数据,并将对应的D列的不同数据保存到li中  
  25.         if c2==i:  
  26.             if c3 in li:  
  27.                 continue  
  28.             else:  
  29.                 li.append(c3)  
  30.         else:  
  31.             continue  
  32. #print len(li)  
  33.     ws1.cell(row=i,column=0).value=i  
  34.     ws1.cell(row=i,column=1).value=len(li)  
  35. ewb1.save(filename=dest_filename)#保存一定要有,否则不会有结果  
  36.       
0 0