怎么利用Python修改Excel内容?
怎么才能把标题#后的内容删去啊?
我的思路根据#前后分成两部分,删除每个部分的前导和尾随空格,就跟sql的split函数功能差不多:
import openpyxl
workbook = openpyxl.load_workbook('microsoft\test.xlsx')
sheet = workbook.active
for row in sheet.iter_rows():
parts = row[0].value.split('#')
parts = [part.strip() for part in parts]
row[0].value = parts[0]
workbook.save('microsft\newtest.xlsx')
可以使用正则匹配#后的内容并删除,代码如下:
import pandas as pd
import re
# 读取Excel文件
df = pd.read_excel('data1.xlsx')
for id, title in enumerate(df['标题']):
if '#' in title:
title = re.sub('#.*','',title)
df.loc[id, '标题'] = title
print(df)
运行结果:
可直接Excel分列,用#分列,这个链接有详细步骤
https://jingyan.baidu.com/article/363872ec0b45ea2f4ba16fe2.html?fr=zywd
import pandas as pd
df = pd.read_excel('test.xlsx')
df['标题'] = df['标题'].apply(lambda x:x[: x.find('#')] if x.find('#') else x)
df.to_excel('testnew.xlsx', index = False)
字符串分割一下就好了
可以参考下
首先我们需要使用openpyxl库,
openpyxl库的功能:
读文件
写文件
修改文件
同时按windows+r,打开命令提示符,输入cmd回车进入,进入之后输入:
pip install openpyxl
1
下载完openpyxl库
接下来我们看一下openpyxl库的一些基本用法:
import openpyxl
# 创建一个Excel workbook 对象
book = openpyxl.Workbook()
# 创建时,会自动产生一个sheet,通过active获取
sh = book.active
# 修改当前 sheet 标题为 工资表
sh.title = '工资表'
# 保存文件
book.save('信息.xlsx')
# 增加一个名为 '年龄表' 的sheet,放在最后
sh1 = book.create_sheet('年龄表-最后')
# 增加一个 sheet,放在最前
sh2 = book.create_sheet('年龄表-最前',0)
# 增加一个 sheet,指定为第2个表单
sh3 = book.create_sheet('年龄表2',1)
# 根据名称获取某个sheet对象
sh = book['工资表']
# 给第一个单元格写入内容
sh['A1'] = '你好'
# 获取某个单元格内容
print(sh['A1'].value)
# 根据行号列号, 给第一个单元格写入内容,
# 注意和 xlrd 不同,是从 1 开始
sh.cell(2,2).value = '我爱python'
# 根据行号列号, 获取某个单元格内容
print(sh.cell(1, 1).value)
book.save('信息.xlsx')
这个可以使用FME,不用写代码就可以解决,比Python更方便,直观,具体思路为,读取数据后,用#进行字符串分割,然后取第一段,最后写出数据
以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:
使用Python的xlwings库可以很方便地操作Excel文件和修改内容。
要删除标题#后的内容,可以按以下步骤操作:
bash
pip install xlwings
python
import xlwings as xw
python
wb = xw.Book('yourfile.xlsx')
sheet = wb.sheets['Sheet1']
python
title_row = None
for i in range(1, sheet.range('A1').expand('table').rows.count + 1):
if sheet.range((i, 1)).value == '#':
title_row = i
break
python
if title_row:
sheet.range((title_row+1, 1), (sheet.rows.count, sheet.columns.count)).clear_contents()
python
wb.save()
wb.close()
整体代码如下:
python
import xlwings as xw
wb = xw.Book('yourfile.xlsx')
sheet = wb.sheets['Sheet1']
title_row = None
for i in range(1, sheet.range('A1').expand('table').rows.count + 1):
if sheet.range((i, 1)).value == '#':
title_row = i
break
if title_row:
sheet.range((title_row+1, 1), (sheet.rows.count, sheet.columns.count)).clear_contents()
wb.save()
wb.close()
运行该代码后,yourfile.xlsx文件的Sheet1表格中,标题#之后的所有内容将被清除。