鱼C论坛

 找回密码
 立即注册
查看: 1998|回复: 3

[学习笔记] python和excel笔记

[复制链接]
发表于 2019-10-25 07:55:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 shenshuai 于 2019-11-15 09:09 编辑

wb = openpyxl.Workbook()    #创建一个新的excel文件

ws = wb.active      #获取工作表

wb = openpyxl.load_workbook(r"文件名称路径") #这个和可以打开指定的excel文件, wb是一个变量,可以改成任何

wb.get_sheet_names() 和 wb.sheetnames    #这两个函数可以调用excel文件里面的所有的工作表

ws = wb["工作表名称"]   #这个函数可以调用指定的工作表

nws = wb.create_sheet(index = 0, title = "工作表名称")    #这个函数可以创建一个新的工作表,并且给他命名, index意思是你想把这张工作表放在什么位置,0是第一位

wb.remove_sheet(wb.get_sheet_by_name("工作表名称"))     #remove_sheet()可以删除工作表,但是()里不能直接输入工作表的名字,需要输入工作表的对象,所以这里就需要写wb.get_sheet_by_name("工作表名称")来指定那个一个工作表是你想删除掉的

c = ws['A2'].value      #可以获取单元格里的内容是什么

c.row   #可以获取横列位置

c.colum  #可以获取竖列位置

c.coordinate #可以获取单元格位置

d = c.offset(2, 0)   #这个意思是以c作为一个位置向下移动2个,

openpyxl.cell.cell.get_column_letter(输入你想查找竖列的数字)   #这个函数可以找见竖列字母在第几位,比如openpyxl.cell.cell.get_column_letter(496)   就会显示'SB'

openpyxl.cell.cell.column_index_from_string(想要查找竖列的字母) #这个函数可以找间竖列排在第几位,比如openpyxl.cell.cell.colunm_index_from_string('SB')   就会显示496

  1. import pandas as pd
  2. import os
  3. from openpyxl import load_workbook
  4. import datetime
  5. import easygui as gui
  6. address = os.getcwd()

  7. def find(name,name2):
  8.     for root, dirs, files in os.walk(address):
  9.         if name in files and name2 in files:
  10.             df1 = pd.read_excel(os.path.join(root,name))
  11.             df2 = pd.read_excel(os.path.join(root,name2))
  12.             
  13.             #df1 = df1.drop(df1.columns[[1,2,3,4,5,6]], axis = 1)
  14.             df2 = df2.drop(df2.columns[[2,3]], axis = 1)

  15.             horizontal_stack = pd.concat([df1, df2], axis = 1)
  16.             horizontal_stack.insert(8, '单品编号', 0)
  17.             horizontal_stack.insert(9, '单品库存:Ontraio', 0)
  18.             horizontal_stack.insert(10, '单品库存:Memphis', 0)
  19.             horizontal_stack.insert(11, '单品库存:Kansas City', 0)
  20.             horizontal_stack.insert(12, '组合库存:Ontario', 0)
  21.             horizontal_stack.insert(13, '组合库存:Memphis', 0)
  22.             horizontal_stack.insert(14, '组合库存:Kansas City', 0)
  23.             horizontal_stack.insert(15, 'SFP', 0)
  24.             horizontal_stack.insert(21, '单品SFP', 0)
  25.             #num_inserted_row = 7
  26.             #for i in range(num_inserted_row):
  27.                 #horizontal_stack.insert(8, 'new_col%s' % i, 0)
  28.             
  29.             export_excel = horizontal_stack.to_excel(address + '\\test_Inventory.xlsx', index = None, header = True)
  30. try:
  31.     s = gui.enterbox(image = 'PA.png', msg ='enter first excel file name: ', title ='Paramount Automotive')
  32.     s2 = gui.enterbox(image = 'PA.png', msg = 'enter second excel file name: ', title = 'Paramount Automotive')
  33.     find(s + '.xlsx',s2 + '.xlsx')
  34. except:
  35.     None
  36.    
  37. wb = load_workbook(address + '\\test_Inventory.xlsx')
  38. ws = wb.active
  39. wb2 = load_workbook(address + '\\Not SFP.xlsx')
  40. ws2 = wb2.active


  41. num = 1
  42. while 1:
  43.     cell = ws.cell(row=num, column=1).value
  44.     if cell:
  45.         num = num +1
  46.     else:
  47.         break
  48.         exit()
  49.         
  50. num2 = 1
  51. for row in range (1, ws2.max_row):
  52.     if(ws2.cell(row,1).value is None):
  53.         break
  54.     else:
  55.         num2 = num2 + 1
  56.         
  57. for h in range (num):
  58.     ws['I%d' % (h+1)].value = '=IF(ISERROR(FIND(" : ",H%d)),H%d,RIGHT(H%d,LEN(H%d)-FIND(" : ",H%d)-2))' % (h + 1, h + 1, h + 1, h + 1, h + 1)
  59. ws['I1'].value = '单品编号'
  60. for j in range (num):
  61.     ws['J%d' % (j+1)].value = '=VLOOKUP($I%d,$Q:$X, 3,0)' % (j + 1)
  62. ws['J1'].value = '单品库存:Ontraio'
  63. for k in range (num):
  64.     ws['K%d' % (k + 1)].value = '=VLOOKUP($I%d,$Q:$X, 4,0)' % (k + 1)
  65. ws['K1'].value = '单品库存:Memphis'
  66. for l in range (num):
  67.     ws['L%d' % (l + 1)].value = '=VLOOKUP($I%d,$Q:$X, 5,0)' % (l + 1)
  68. ws['L1'].value = '单品库存:Kansas City'
  69. for m in range(num):
  70.     ws['M%d' % (m + 1)].value = '=MINIFS(J:J,$A:$A,$A%d)' % (m + 1)
  71. ws['M1'].value = '组合库存:Ontario'
  72. for n in range(num):
  73.     ws['N%d' % (n + 1)].value = '=MINIFS(K:K,$A:$A,$A%d)' % (n + 1)
  74. ws['N1'].value = '组合库存:Memphis'
  75. for o in range(num):
  76.     ws['O%d' % (o + 1)].value = '=MINIFS(L:L,$A:$A,$A%d)' % (o + 1)
  77. ws['O1'].value = '组合库存:Kansas City'

  78. for p in range(num):
  79.     ws['P%d' % (p + 1)].value = '=IF(AND(M%d>=5,N%d>=5,O%d>=5),"Seller Fulfilled Prime - Complete",IF(AND(M%d>=5,N%d>=5,O%d<5),"Seller Fulfilled Prime - Ontario + Memphis",IF(AND(M%d>=5,N%d<5,O%d>=5),"Seller Fulfilled Prime - Ontario + Kansas City",IF(AND(M%d<5,N%d>=5,O%d>=5),"Seller Fulfilled Prime - Kansas City + Memphis",IF(AND(M%d<5,N%d<5,O%d<5),"Default Amazon Template",IF(AND(M%d>=5,N%d<5,O%d<5),"Seller Fulfilled Prime - Ontario",IF(AND(M%d<5,N%d>=5,O%d<5),"Seller Fulfilled Prime - Memphis",IF(AND(M%d<5,N%d<5,O%d>=5),"Seller Fulfilled Prime - Kansas City",0))))))))' % (p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1,p + 1)
  80. ws['P1'].value = 'SFP'

  81. for v in range(ws.max_row):
  82.     ws['v%s' % (v + 1)].value = '=IF(AND(S%d>=5,T%d>=5,U%d>=5),"Seller Fulfilled Prime - Complete",IF(AND(S%d>=5,T%d>=5,U%d<5),"Seller Fulfilled Prime - Ontario + Memphis",IF(AND(S%d>=5,T%d<5,U%d>=5),"Seller Fulfilled Prime - Ontario + Kansas City",IF(AND(S%d<5,T%d>=5,U%d>=5),"Seller Fulfilled Prime - Kansas City + Memphis",IF(AND(S%d<5,T%d<5,U%d<5),"Default Amazon Template",IF(AND(S%d>=5,T%d<5,U%d<5),"Seller Fulfilled Prime - Ontario",IF(AND(S%d<5,T%d>=5,U%d<5),"Seller Fulfilled Prime - Memphis",IF(AND(S%d<5,T%d<5,U%d>=5),"Seller Fulfilled Prime - Kansas City",0))))))))' % (v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1,v + 1)
  83. ws['V1'].value = '单品SFP'

  84. ws3 =wb.create_sheet('Not SFP')
  85. sheet = wb['Not SFP']
  86. for a in range (num2):
  87.     sheet['A%d' % (a + 1)].value = ws2['A%d' % (a + 1)].value
  88. for b in range (num2):
  89.     sheet['B%d' % (b + 1)].value = ws2['B%d' % (b + 1)].value
  90.    
  91. for w in range (ws.max_row):
  92.     ws['W%d' % (w + 1)].value = "=VLOOKUP(Q%d,'Not SFP'!$A:$B,2,0)" % (w + 1)
  93.    
  94. savefile = wb.save(address + '\\test_Inventory.xlsx')
  95. gui.msgbox('Done!!')


复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-25 10:16:04 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-10-25 11:42:38 | 显示全部楼层

谢谢老哥支持哈,我怕自己忘记了,都写下来了哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-25 13:22:33 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-14 13:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表