鱼C论坛

 找回密码
 立即注册
查看: 2164|回复: 2

合并excel表格,怎么才能从105行开始合并呢?

[复制链接]
发表于 2021-9-9 00:05:20 | 显示全部楼层 |阅读模式
60鱼币
下面是我从网上抄的一个代码,我也看不懂,怎么才能从106行开始合并呢?需要改哪里?拜托了
  1. import xlrd
  2. import xlsxwriter
  3. import glob
  4. import os

  5. biao_tou = "NULL"
  6. wei_zhi = "NULL"


  7. # 获取要合并的所有exce表格
  8. def get_exce():
  9.     global wei_zhi
  10.     wei_zhi = input("请输入Exce文件所在的目录:")
  11.     all_exce = glob.glob(wei_zhi + "*.xlsx")
  12.     print("该目录下有" + str(len(all_exce)) + "个exce文件:")
  13.     if (len(all_exce) == 0):
  14.         return 0
  15.     else:
  16.         for i in range(len(all_exce)):
  17.             print(all_exce[i])
  18.         return all_exce


  19. # 打开Exce文件
  20. def open_exce(name):
  21.     fh = xlrd.open_workbook(name)
  22.     return fh


  23. # 获取exce文件下的所有sheet
  24. def get_sheet(fh):
  25.     sheets = fh.sheets()
  26.     return sheets


  27. # 获取sheet下有多少行数据
  28. def get_sheetrow_num(sheet):
  29.     return sheet.nrows


  30. # 获取sheet下的数据
  31. def get_sheet_data(sheet, row):
  32.     for i in range(row):
  33.         if (i == 0):
  34.             global biao_tou
  35.             biao_tou = sheet.row_values(i)
  36.             continue
  37.         values = sheet.row_values(i)
  38.         all_data1.append(values)

  39.     return all_data1


  40. if __name__ == '__main__':
  41.     all_exce = get_exce()
  42.     # 得到要合并的所有exce表格数据
  43.     if (all_exce == 0):
  44.         print("该目录下无.xlsx文件!请检查您输入的目录是否有误!")
  45.         os.system('pause')
  46.         exit()

  47.     all_data1 = []
  48.     # 用于保存合并的所有行的数据

  49.     # 下面开始文件数据的获取
  50.     for exce in all_exce:
  51.         fh = open_exce(exce)
  52.         # 打开文件
  53.         sheets = get_sheet(fh)
  54.         # 获取文件下的sheet数量

  55.         for sheet in range(len(sheets)):
  56.             row = get_sheetrow_num(sheets[sheet])
  57.             # 获取一个sheet下的所有的数据的行数

  58.             all_data2 = get_sheet_data(sheets[sheet], row)
  59.             # 获取一个sheet下的所有行的数据

  60.     all_data2.insert(0, biao_tou)
  61.     # 表头写入

  62.     # 下面开始文件数据的写入
  63.     new_exce = wei_zhi + "test.xlsx"
  64.     # 新建的exce文件名字

  65.     fh1 = xlsxwriter.Workbook(new_exce)
  66.     # 新建一个exce表

  67.     new_sheet = fh1.add_worksheet()
  68.     # 新建一个sheet表

  69.     for i in range(len(all_data2)):
  70.         for j in range(len(all_data2[i])):
  71.             c = all_data2[i][j]
  72.             new_sheet.write(i, j, c)

  73.     fh1.close()
  74.     # 关闭该exce表

  75.     print("文件合并成功,请查看“" + wei_zhi + "”目录下的test.xlsx文件!")

  76.     os.system('pause')
  77.     os.system('pause')
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-9 14:24:03 | 显示全部楼层
假设你需要将所有 Excel 表的 105 行以后(不含105行)合并,可以试试将41行至51行改为如下:

  1. # 获取sheet下的数据
  2. def get_sheet_data(sheet,row,skip_row=1):
  3.     """ skip_row: 跳过的行数, 如要从第106行开始, 该值设为105
  4.     默认值为1, 表示从第2行开始合并 (第1行为表头行)
  5.     """
  6.     global biao_tou
  7.     biao_tou = sheet.row_values(0)
  8.     if skip_row < row:
  9.         for i in range(skip_row, row):
  10.             values = sheet.row_values(i)
  11.             all_data1.append(values)
  12.         
  13.     return all_data1
复制代码


再将第76行
  1.             all_data2 = get_sheet_data(sheets[sheet], row)
复制代码

加一个跳过行数的参数:
  1.             all_data2 = get_sheet_data(sheets[sheet], row, 105)
复制代码


如果某个 Excel 表的行数小于这个值,不会合并这个文件。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
lizhiyong_11 + 5 + 5 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-9 16:15:19 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 10:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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