python更改excel表格内容

怎么利用Python修改Excel内容?

img

怎么才能把标题#后的内容删去啊?

我的思路根据#前后分成两部分,删除每个部分的前导和尾随空格,就跟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)

运行结果:

img

可直接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文件和修改内容。
要删除标题#后的内容,可以按以下步骤操作:

  1. 安装xlwings库:
bash
pip install xlwings

  1. 导入xlwings:
python
import xlwings as xw

  1. 打开Excel文件和指定Sheet:
python
wb = xw.Book('yourfile.xlsx')
sheet = wb.sheets['Sheet1']

  1. 获取标题所在行号:
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

  1. 如果找到标题,则从标题下一行开始删除内容:
python
if title_row:
    sheet.range((title_row+1, 1), (sheet.rows.count, sheet.columns.count)).clear_contents()

  1. 保存Excel文件:
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表格中,标题#之后的所有内容将被清除。