报错:line 32, in <module> writer.sheets[sheet_name].write(0, 0, '站点名称') AttributeError: 'Worksheet' object has no attribute 'write'
时间: 2023-12-16 18:03:55 浏览: 44
这个错误通常是因为你使用的是较新版本的 `openpyxl` 库,而不是旧版本的 `xlwt` 库,因此 `write()` 方法不再适用。
你可以尝试使用 `openpyxl` 库提供的 `cell()` 方法来替代 `write()` 方法,例如:
```python
from openpyxl import Workbook
workbook = Workbook()
sheet = workbook.active
sheet.cell(row=1, column=1).value = '站点名称'
```
这将在第一行第一列写入“站点名称”。你也可以使用 `append()` 方法在表格中添加一行数据,例如:
```python
sheet.append(['站点名称', '站点链接'])
```
这将在第一行添加一个包含“站点名称”和“站点链接”的行。
相关问题
Traceback (most recent call last): File "C:\yh\PycharmProjects\a\A5204990500002023050006\testing.py", line 28, in <module> writer.save() ^^^^^^^^^^^ AttributeError: 'OpenpyxlWriter' object has no attribute 'save'. Did you mean: '_save'?
这个错误可能是因为您使用的是较老版本的pandas,`ExcelWriter.save()`函数已经被弃用了。您可以使用`ExcelWriter.close()`函数代替,或者升级到较新版本的pandas,使用`ExcelWriter.save()`函数。
下面是使用`ExcelWriter.close()`函数的示例代码:
```python
import pandas as pd
import os
from openpyxl.styles import Font
# 文件夹路径
folder_path = r'C:\yh\PycharmProjects\a\A5204990500002023050006'
# 获取文件夹内所有的文件名
file_names = os.listdir(folder_path)
# 读取所有的excel文件
dfs = []
for file_name in file_names:
if file_name.endswith('.xlsx') or file_name.endswith('.xls'):
file_path = os.path.join(folder_path, file_name)
df = pd.read_excel(file_path)
dfs.append(df)
# 合并所有的数据
df_all = pd.concat(dfs)
# 设置内容格式
font = Font(name='Arial', size=12, bold=False, italic=False, color='FF000000')
writer = pd.ExcelWriter('all.xlsx', engine='openpyxl')
df_all.to_excel(writer, index=False)
for sheetname in writer.book.sheetnames:
writer.sheets[sheetname].cell(row=1, column=1).font = font
writer.close()
```
这段代码与上面的代码基本相同,只是使用了`ExcelWriter.close()`函数代替了`ExcelWriter.save()`函数。
TypeError: expected <class 'openpyxl.styles.colors.Color'> 报错了 什么原因
这个错误是因为在设置填充颜色时,传递的参数类型不正确。`openpyxl` 中的 `PatternFill` 类的 `start_color` 和 `end_color` 参数需要接收 `openpyxl.styles.colors.Color` 类型的对象。
你可以使用 `openpyxl.styles.colors` 模块中的 `Color` 类来创建颜色对象,然后将其传递给 `PatternFill` 类的参数。以下是一个修正后的示例代码:
```python
import pandas as pd
from openpyxl import load_workbook
from openpyxl.styles import PatternFill
from openpyxl.styles.colors import Color
# 读取 Excel 文件
df = pd.read_excel('your_file.xlsx')
# 创建一个样式对象,设置填充颜色为红色
red_fill = PatternFill(start_color=Color(rgb="FF0000"), end_color=Color(rgb="FF0000"), fill_type="solid")
# 修改指定单元格的颜色
# 假设你要修改第一行第一列的单元格颜色
cell_coord = 'A1'
sheet_name = 'Sheet1' # 修改为你的工作表名称
# 将 DataFrame 数据写入已存在的 Excel 文件,并保留原有样式
with pd.ExcelWriter('your_file.xlsx', engine='openpyxl') as writer:
writer.book = load_workbook('your_file.xlsx')
df.to_excel(writer, sheet_name=sheet_name, index=False)
writer.sheets[sheet_name][cell_coord].fill = red_fill
writer.save()
```
在上述代码中,我们使用 `Color(rgb="FF0000")` 来创建红色的颜色对象,并将其传递给 `PatternFill` 类的 `start_color` 和 `end_color` 参数。
请确保将 `'your_file.xlsx'` 修改为你要操作的 Excel 文件的路径,将 `'Sheet1'` 修改为你要操作的工作表名称,将 `cell_coord` 修改为你要修改的单元格坐标。希望这次能解决你的问题!如果还有其他疑问,请随时提问。