# 修改宿舍入住信息 def edit_info(): wb = openpyxl.load_workbook('c:/students.xlsx') sheet = wb.active name = input("请输入要修改的学生姓名:") for row in sheet.iter_rows(min_row=2): if row[0].value == name: dormitory = input("请输入新的宿舍号:") row[1].value = dormitory wb.save('c:/students.xlsx') print("修改成功!") return print("未找到该学生信息!")
时间: 2024-02-14 16:35:38 浏览: 351
这段代码是用来修改 Excel 文件中学生宿舍信息的。具体来说,它会提示用户输入要修改的学生姓名,然后在 Excel 文件中查找该姓名对应的行。如果找到了该学生信息,它会提示用户输入新的宿舍号,并将该宿舍号更新到 Excel 文件中。最后,它会输出“修改成功!”并返回程序执行。如果没有找到该学生信息,则会输出“未找到该学生信息!”。
需要注意的是,该代码使用了 openpyxl 库来操作 Excel 文件,因此需要在代码中导入该库。此外,该代码假设 Excel 文件中第一行为表头,从第二行开始存储学生信息。如果实际情况不符,需要相应地修改代码。
相关问题
优化代码,使写入的数据文字格式不变:import openpyxl # 打开申请表工作簿和汇总表工作簿 wb_app = openpyxl.load_workbook('申请名单.xlsx') wb_sum = openpyxl.load_workbook('汇总表.xlsx') # 获取申请表Sheet1和汇总表Sheet1 ws_app = wb_app['Sheet1'] ws_sum = wb_sum['Sheet1'] # 复制申请表数据到汇总表底部 for row in ws_app.iter_rows(min_row=2, values_only=True): ws_sum.append(row) # 保存汇总表工作簿 try: wb_sum.save('汇总表.xlsx') except Exception as e: print('保存汇总表失败,错误信息:', e) finally: # 关闭两个工作簿 wb_app.close() wb_sum.close()
可以使用`openpyxl.styles`中的`Style`和`Font`类来设置单元格的格式,如下所示:
```python
import openpyxl
from openpyxl.styles import Font, Style
# 打开申请表工作簿和汇总表工作簿
wb_app = openpyxl.load_workbook('申请名单.xlsx')
wb_sum = openpyxl.load_workbook('汇总表.xlsx')
# 获取申请表Sheet1和汇总表Sheet1
ws_app = wb_app['Sheet1']
ws_sum = wb_sum['Sheet1']
# 设置字体样式
font = Font(name='宋体', size=12)
# 设置单元格样式
style = Style(font=font)
# 复制申请表数据到汇总表底部,并设置单元格样式
for row in ws_app.iter_rows(min_row=2, values_only=True):
ws_sum.append(row)
for cell in ws_sum[-1]:
cell.style = style
# 保存汇总表工作簿
try:
wb_sum.save('汇总表.xlsx')
except Exception as e:
print('保存汇总表失败,错误信息:', e)
finally:
# 关闭两个工作簿
wb_app.close()
wb_sum.close()
```
这样一来,复制到汇总表中的数据就会继承原先申请表中的字体格式。
wb1 = openpyxl.load_workbook(source_file) ws1 = wb1.active wb2 = openpyxl.load_workbook(target_file) wb2_oldsheetname = wb2.sheetnames target_ws_name = 'sd' + source_file[-6] wb2.active.title = target_ws_name ws2 = wb2.active python修改sheet名后为target_ws_name,使用pandas如何更新表格里包含图表的引用数据源中数据系列涉及到的sheet名,更新并输出代码
可以使用 Pandas 中的 `read_excel` 方法读取表格,然后使用 `to_excel` 方法输出修改后的表格。在 `read_excel` 方法中,可以通过 `sheet_name` 参数指定要读取的工作表名称。在 `to_excel` 方法中,可以通过 `sheet_name` 参数指定要输出的工作表名称。
为了更新包含图表的引用数据源中的数据系列涉及到的工作表名称,可以使用正则表达式和字符串替换来完成。具体操作步骤如下:
1. 读取表格文件到 Pandas DataFrame 中。
```
import pandas as pd
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
```
2. 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称。
```
import re
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
```
3. 将更新后的 DataFrame 输出到表格文件中。
```
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
完整代码如下:
```
import pandas as pd
import re
import openpyxl
wb1 = openpyxl.load_workbook(source_file)
ws1 = wb1.active
wb2 = openpyxl.load_workbook(target_file)
wb2_oldsheetname = wb2.sheetnames
target_ws_name = 'sd' + source_file[-6]
wb2.active.title = target_ws_name
ws2 = wb2.active
# 读取表格文件到 Pandas DataFrame 中
df = pd.read_excel(target_file, sheet_name=target_ws_name, engine='openpyxl')
# 使用正则表达式和字符串替换来更新数据系列涉及到的工作表名称
old_sheetname_pattern = re.compile('|'.join(wb2_oldsheetname))
new_sheetname = target_ws_name
for col in df.columns:
for i, cell_value in enumerate(df[col]):
if isinstance(cell_value, str) and old_sheetname_pattern.search(cell_value):
df.at[i, col] = old_sheetname_pattern.sub(new_sheetname, cell_value)
# 将更新后的 DataFrame 输出到表格文件中
df.to_excel(target_file, sheet_name=target_ws_name, index=False)
```
阅读全文