目录
(1)声明:
不局限于下述问题,可以根据自身情况加以修改。
(2)问题:
如下图所示,需要在指定的位置插入数字“0”,并实现逐行插入。
提前看结果图:
(4)思路:
读取表格>>>根据关键词(标题)确定需要更改的位置>>>创建新表格>>>保存更改后的数据
(5)代码实现:(附加注释)
import xlsxwriter
import pandas as pd
# ------------------------------------读取表格并更改数据------------------------------------ #
df = pd.read_excel(r'G:\CSDN\python\Office_skills\demo.xls') # 读取xlsx中第一个sheet
number = df.index.values
title = df.columns.values
print("行序号:{}".format(number)) # 打印所有行的序号
print("列标题:{}".format(title)) # 打印所有列的标题
# 定位关键词1的位置
i = 0
for i in range(len(title)):
if title[i] == "Flying":
i += 1
print(i)
break
# 定位关键词2的位置
ii = 0
for ii in range(len(title)):
if title[ii] == "Bulldog":
ii += 1
print(ii)
break
data2 = df.values # list形式,读取表格所有数据
print("所有数据: \n", data2)
i = i - 1
ii = ii - 1
values = []
values1 = []
# 更改表格内容(此处是在指定位置插入数字"0")
for j in range(len(number)):
# print(j, i)
value = data2[j][i]
value = str(value)
values.append("%s%s%s" % (value[0:1], "0", value[1:5]))
value1 = data2[j][ii]
value1 = str(value1)
values1.append("%s%s%s" % (value1[0:1], "0", value1[1:3]))
print(values)
print(values1)
# ------------------------------------创建新的表格并保存------------------------------------ #
workbook = xlsxwriter.Workbook(r'G:\CSDN\python\Office_skills\result.xlsx') # 创建表格
worksheet_A = workbook.add_worksheet('sheet1') # 添加表格中的一个工作表('sheet1')
str_format = {'align': 'center', # 水平位置设置:居中
'valign': 'vcenter', # 垂直位置设置,居中
'font_size': 11, # '字体大小设置'
}
str_format = workbook.add_format(str_format) # 添加格式
# write(坐标、内容、格式)
worksheet_A.write('B1', 'Flying', str_format)
worksheet_A.write('D1', 'Bulldog', str_format)
for i in range(len(values)):
# 写入内容: write(坐标、内容、格式)
worksheet_A.write(i + 1, 1, values[i], str_format)
worksheet_A.write(i + 1, 3, values1[i], str_format)
workbook.close() # 关闭工作薄,并把更改的信息存储到指定的文件中,此处无错误,错误的是路径有问题!!!
>>>运行结果
行序号:[0 1 2 3 4 5 6 7 8 9]
列标题:['序号' 'Flying' 'Bulldog']
2
3
所有数据:
[[ 1 12138 666]
[ 2 12138 666]
[ 3 12138 666]
[ 4 12138 666]
[ 5 12138 666]
[ 6 12138 666]
[ 7 12138 666]
[ 8 12138 666]
[ 9 12138 666]
[ 10 12138 666]]
['102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138', '102138']
['6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066', '6066'
(6)注意事项:
- pandas读取xlsx文件时,可能出现错误,这是需要另存为xls文件
- 当worksheet.close()报错时,大概率不是此处的错误,可能是路径的问题
- 写好内容格式后,一定要记得添加格式
- 在字符串的指定位置插入内容,这个思想很重要,具体实现见上述代码
>>>如有疑问,欢迎评论区一起探讨。