【问题标题】:What is the best way to write to a sheet without overwriting an excel file?在不覆盖 Excel 文件的情况下写入工作表的最佳方法是什么?
【发布时间】:2018-09-08 17:27:01
【问题描述】:

我有一个名为 MasterFile 的 Excel 文件。在 MasterFile 中,我有多个带有公式的工作表。我想使用下面的代码更新 MasterFile 中的一张表,而不会覆盖我的任何数据或公式。

到目前为止,这是我的代码:

from bs4 import BeautifulSoup
import requests
import pandas as pd
from openpyxl import load_workbook

url = 'http://www.baseballpress.com/lineups'

soup = BeautifulSoup(requests.get(url).text, 'html.parser')

players = [i.text for i in soup.find_all('a', {'class': 'player-link'})]


my_dict = (players)

df = pd.DataFrame(pd.Series(my_dict))

writer = pd.ExcelWriter('my2nd_webscrape.xlsx')
df.to_excel(writer,'Sheet1')
writer.save()

我在How to write to an existing excel file without breaking formulas with openpyxl? 中找到了有关此主题的一些信息,但我不确定如何调整我的代码。

【问题讨论】:

  • 这里不需要熊猫。您可以通过在保存时使用不同的文件名来防止覆盖。
  • 感谢@CharlieClark 的提醒!你可以给我举个例子吗?我对这些东西很陌生。在此期间,我会尽力弄清楚。谢谢楼主!

标签: python pandas openpyxl excel-writer-xlsx


【解决方案1】:

试试这个:

from bs4 import BeautifulSoup
import requests
import pandas as pd
from openpyxl import load_workbook

book = load_workbook('my2nd_webscrape.xlsx')
writer = pd.ExcelWriter('my2nd_webscrape.xlsx')
writer.book = book

url = 'http://www.baseballpress.com/lineups'
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
players = [i.text for i in soup.find_all('a', {'class': 'player-link'})]
my_dict = (players)

df = pd.DataFrame(pd.Series(my_dict))
df.to_excel(writer,'Sheet1')
writer.save()
writer.close()

【讨论】:

  • 我收到一个错误... AttributeError: 'Workbook' 对象没有属性 'add_worksheet'。我将在今天晚些时候对此进行调查。感谢您回复我@Hi​​mavanth! =)
  • 仅供参考 - xlwtxlsxwriter 分别具有 add_sheetadd_worksheet 方法。无论如何,很乐意提供帮助!
猜你喜欢
  • 1970-01-01
  • 2013-05-24
  • 2021-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 2013-04-28
相关资源
最近更新 更多