鱼C论坛

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

[已解决]给进销存到处的文件新增2列

[复制链接]
发表于 2023-3-15 20:18:31 | 显示全部楼层 |阅读模式

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

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

x
最近处理一个进销存软件导出的客户文件,是xlsx格式,删减部分内容后,大概如下

客户名称        客户类型        当前剩余积分        当前累计积分        客户会员等级
余小姐        新客户(进销存)        1096        1096        默认会员
罗小姐        新客户(进销存)        886        886        默认会员
小仙女        新客户(进销存)        1601        1601        默认会员
伍小姐        新客户(进销存)        349        399        默认会员
杨小姐        新客户(进销存)        795        795        默认会员
陈小姐        新客户(进销存)        557        557        默认会员
叶小姐        新客户(进销存)        1700        1759        默认会员
李小姐        新客户(进销存)        3897        3897        默认会员
曾小姐        新客户(进销存)        1222        1222        默认会员
孙小姐        新客户(进销存)        798        798        默认会员
唐小姐        新客户(进销存)        299        299        默认会员
邓        新客户(进销存)        465        465        默认会员
高小姐        新客户(进销存)        2702        2702        默认会员
兰小姐        新客户(进销存)        375        375        默认会员

想在后面增加2列,第一列的列名为增加后的积分,值为当前剩余积分的值+100,
第二列的i行的值的内容为“vip  客户名称i行的值,过节好,新增100积分,现在的值为增加后的积分的i行的值(前面新增的列),一些客套话"

刚刚尝试用for in,出现TypeError: 'int' object is not iterable,麻烦大神帮忙处理下。
最佳答案
2023-3-15 20:23:51
可以使用openpyxl库来直接操作Excel文件。请先安装openpyxl库,然后按照以下步骤操作:
import openpyxl

# 打开Excel文件
file_path = 'your_file_path.xlsx'
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active

# 获取最大行数
max_row = sheet.max_row

# 添加列名
sheet.cell(row=1, column=6).value = "增加后的积分"
sheet.cell(row=1, column=7).value = "客套话"

# 遍历表格内容,添加新列数据
for row in range(2, max_row + 1):
    current_points = sheet.cell(row=row, column=3).value
    customer_name = sheet.cell(row=row, column=1).value

    # 计算新积分
    new_points = current_points + 100

    # 生成客套话字符串
    greetings = f"vip {customer_name},过节好,新增100积分,现在的值为{new_points},一些客套话"

    # 将新数据写入新列
    sheet.cell(row=row, column=6).value = new_points
    sheet.cell(row=row, column=7).value = greetings

# 保存更新后的Excel文件
workbook.save('updated_file.xlsx')

这段代码首先打开了Excel文件并获取了活动工作表。接着,它遍历表格的内容,并为每一行添加新的列数据。最后,将更新后的工作簿保存为一个新的Excel文件。

请确保将'your_file_path.xlsx'替换为您要处理的文件的实际路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-15 20:23:51 | 显示全部楼层    本楼为最佳答案   
可以使用openpyxl库来直接操作Excel文件。请先安装openpyxl库,然后按照以下步骤操作:
import openpyxl

# 打开Excel文件
file_path = 'your_file_path.xlsx'
workbook = openpyxl.load_workbook(file_path)
sheet = workbook.active

# 获取最大行数
max_row = sheet.max_row

# 添加列名
sheet.cell(row=1, column=6).value = "增加后的积分"
sheet.cell(row=1, column=7).value = "客套话"

# 遍历表格内容,添加新列数据
for row in range(2, max_row + 1):
    current_points = sheet.cell(row=row, column=3).value
    customer_name = sheet.cell(row=row, column=1).value

    # 计算新积分
    new_points = current_points + 100

    # 生成客套话字符串
    greetings = f"vip {customer_name},过节好,新增100积分,现在的值为{new_points},一些客套话"

    # 将新数据写入新列
    sheet.cell(row=row, column=6).value = new_points
    sheet.cell(row=row, column=7).value = greetings

# 保存更新后的Excel文件
workbook.save('updated_file.xlsx')

这段代码首先打开了Excel文件并获取了活动工作表。接着,它遍历表格的内容,并为每一行添加新的列数据。最后,将更新后的工作簿保存为一个新的Excel文件。

请确保将'your_file_path.xlsx'替换为您要处理的文件的实际路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-3-15 22:46:56 | 显示全部楼层
谢谢大神
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-16 20:06:05 | 显示全部楼层
其实还有个方法,用pandas也行
首先用read_excel读取为df1
然后从df1里根据['客户名称','当前剩余积分']取出后对积分+100即可,然后这个记为df2
接着继续从df1找出vip,然后获取数值并插入新列作为df3
最后用merge连接在一起即可
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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