鱼C论坛

 找回密码
 立即注册
查看: 3672|回复: 4

使用python操作excel,怎么才能按顺序显示

[复制链接]
发表于 2020-11-13 09:59:15 | 显示全部楼层 |阅读模式

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

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

x
  1. #coding=gbk

  2. import openpyxl

  3. from openpyxl.utils import column_index_from_string

  4. filename = r'./waf策略统计.xlsx'

  5. tongji = openpyxl.load_workbook( filename )

  6. #——————————————服务器ip:10.254.221.140————————————————————————————————————————

  7. tongji1 = tongji['Sheet1']

  8. maxtongji_hang = tongji1.max_row

  9. daochu = openpyxl.load_workbook( r'./waf导出日志.xlsx' )

  10. daochu1 = daochu['Sheet1']

  11. maxdaochu_hang = daochu1.max_row

  12. maxdaochu_lie = daochu1.max_column

  13. for i in range(2,maxdaochu_hang + 1):
  14.        
  15.         tongji1.cell(maxtongji_hang + 1,column_index_from_string('A')).value = maxtongji_hang + 0
  16.        
  17.        
  18.         if daochu1.cell(i,column_index_from_string('C')).value == '10.254.221.140' and daochu1.cell(i,column_index_from_string('D')).value == 8068:
  19.        
  20.        
  21.                 tongji1.cell(i,column_index_from_string('B')).value = daochu1.cell(i,column_index_from_string('C')).value
  22.                 tongji1.cell(i,column_index_from_string('C')).value = daochu1.cell(i,column_index_from_string('D')).value
  23.                
  24.                
  25.        
  26.         maxtongji_hang += 1       
  27. #统计次数
  28. times = 0

  29. file_value={}

  30. for each in daochu1['C']:
  31.        
  32.         if each.value == '10.254.221.140':
  33.                        
  34.                 times+=1
  35.             
  36. #print(times)

  37. tongji.active['K2']=times
  38. #————       
  39.        
  40.        
  41. tongji.save('./xin.xlsx')       
复制代码


目前我这边导出的表格并不是按顺序显示而是原表格的哪行就到新表格的哪一行,如果我有说的不明白的地方尽管说哈
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-11-13 11:30:20 | 显示全部楼层
你可以把大问题切成几个小问题
一个一个问题解决最后拼接在一起
这个问题你主要是想解决怎样的排序问题?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 11:44:40 | 显示全部楼层
  1. from openpyxl import load_workbook
  2. def read_excel_xlsx(path:str, sheet_index:int=0, is_read_head:bool=False):
  3.     wb = load_workbook(path, read_only=True)
  4.     table = wb[wb.sheetnames[sheet_index]]
  5.     rows = table.max_row
  6.     cols = table.max_column
  7.     if rows < 2:
  8.         raise Exception("读取不到数据,或者只有一个表头,可以尝试把table命名为\'Sheet%d\'"%(1 + sheet_index))
  9.     querylist = map(lambda row: tuple(map(lambda col: col.value, row)),table.iter_rows(min_row=int(not is_read_head)+1, max_col=cols, max_row=rows))
  10.     return querylist

  11. from openpyxl import Workbook
  12. def write_excel_xlsx(path:str, sheet_index:int, value:list):
  13.     index = len(value)
  14.     wb = Workbook()
  15.     sheet = wb[wb.sheetnames[sheet_index]]
  16.     for i in range(0, index):
  17.         for j in range(0, len(value[i])):
  18.             sheet.cell(row = i + 1, column = j + 1, value=value[i][j])
  19.     wb.save(path)

  20. qs = read_excel_xlsx('./waf策略统计.xlsx',is_read_head=True)
  21. qs = filter(lambda x:x[2]==''10.254.221.140'' and x[3]=='8068', qs)
  22. write_excel_xlsx('./xin.xlsx',0,value=list(qs))
复制代码

没给你统计次数 你再改改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-13 13:59:19 | 显示全部楼层
逃兵 发表于 2020-11-13 11:30
你可以把大问题切成几个小问题
一个一个问题解决最后拼接在一起
这个问题你主要是想解决怎样的排序问题?


就是
  1.         tongji1.cell(maxtongji_hang + 1,column_index_from_string('A')).value = maxtongji_hang + 0
  2.         
  3.         
  4.         if daochu1.cell(i,column_index_from_string('C')).value == '10.254.221.140' and daochu1.cell(i,column_index_from_string('D')).value == 8068:

  5.         
  6.                 tongji1.cell(i,column_index_from_string('B')).value = daochu1.cell(i,column_index_from_string('C')).value
  7.                 tongji1.cell(i,column_index_from_string('C')).value = daochu1.cell(i,column_index_from_string('D')).value
复制代码


        第一句是表格里面的序号,如果匹配条件就把原表格的内容赋值到新的表格,但是不是按顺序的,比如原表格第一条有这个条件,第三条也有,新生成的表格就会显示第一条有,第二条空,第三条有,怎样让新生成的表格顺着排下去就行这样
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-13 16:01:52 | 显示全部楼层
是这个意思吗?
  1. #coding=gbk

  2. import openpyxl

  3. from openpyxl.utils import column_index_from_string

  4. filename = r'./waf策略统计.xlsx'

  5. tongji = openpyxl.load_workbook( filename )

  6. #——————————————服务器ip:10.254.221.140————————————————————————————————————————

  7. tongji1 = tongji['Sheet1']

  8. maxtongji_hang = tongji1.max_row

  9. daochu = openpyxl.load_workbook( r'./waf导出日志.xlsx' )

  10. daochu1 = daochu['Sheet1']

  11. maxdaochu_hang = daochu1.max_row

  12. maxdaochu_lie = daochu1.max_column

  13. for i in range(2,maxdaochu_hang + 1):
  14.         
  15.         tongji1.cell(maxtongji_hang + 1,column_index_from_string('A')).value = maxtongji_hang + 0
  16.         
  17.         
  18.         if daochu1.cell(i,column_index_from_string('C')).value == '10.254.221.140' and daochu1.cell(i,column_index_from_string('D')).value == 8068:
  19.         
  20.         
  21.                 tongji1.cell(i,column_index_from_string('B')).value = daochu1.cell(i,column_index_from_string('C')).value
  22.                 tongji1.cell(i,column_index_from_string('C')).value = daochu1.cell(i,column_index_from_string('D')).value
  23.                
  24.                
  25.         
  26.         maxtongji_hang += 1        
  27. #统计次数
  28. times = 0

  29. file_value={}

  30. for each in daochu1['C']:
  31.         
  32.         if each.value == '10.254.221.140':
  33.                         
  34.                 times+=1
  35.             
  36. #print(times)

  37. ws = tongji.active
  38. a = 0
  39. for i in ws['B']:
  40.         a+=1
  41.         if i.value == None:
  42.                 ws.delete_rows(a)
  43.                 a-=1

  44. ws['K2']=times
  45. #————        
  46.         
  47.         
  48. tongji.save('./xin.xlsx')        
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-29 13:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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