看到网友文章《python进行excel随机抽样》,受到新启发。同时也对于如何破解报错问题产生兴趣。 按照新思路试验了一下,成功绕过限制。代码如下:
1.原文地址:https://blog.csdn.net/byhjnwei/article/details/106541765?spm=1001.2014.3001.55012.报错信息:
ValueError: Cells cannot be copied from other worksheets
import openpyxl,random
file_name_list = [] # 将文件名集合放在一个列表。
for file_name in file_name_list:
# 读取
wb=openpyxl.load_workbook(file_name)
ws=wb.active
# 随机抽取20个样本,第一行是表头,不取。
rand_sample_list = random.sample(list(ws.values)[1:], 20)
# 写入一个新的excel表格
nws=wb.create_sheet("抽样结果")
nws.append(list(ws.values)[0]) # 在新文件写入第一行基本信息。关键:用ws.values
# 用列表推导式+[[……]],产生新的数据列表
sample_list=([list(i) for i in rand_sample_list]+[[f'抽样结果:共{len(rand_sample_list)}人']])
# 遍历新列表数据(随机抽取人员信息+新增内容),写入新文件。
for sample in sample_list:
nws.append(sample)
# 保存
wb.save(f'{file_name.rstrip(".xlsx")}-out2.xlsx')
print(f'{file_name}抽样成功!')