使用 Python 覆盖 XLSX 文件中的现有单元格
Overwriting existing cells in an XLSX file using Python
我正在尝试找到一个库,该库会覆盖现有单元格以使用 Python 更改其内容。
我想做什么:
- 从 .xlsx 文件读取
- 比较单元格数据以确定是否需要更改。
- 更改单元格中的数据,例如。覆盖单元格 'O2'
中的日期
- 保存文件。
我试过以下库:
- xlsxwriter
- 组合:
- xlrd
- xlwt
- xlutils
- openpyxl
xlsxwriter 仅写入新的 excel sheet 和文件。
组合:可以从 .xlsx 读取但只能写入 .xls
openpyxl:从现有文件读取但不写入现有单元格只能创建新行和单元格,或者可以创建整个新工作簿
如有任何建议,我们将不胜感激。其他图书馆?如何操作上面的库来覆盖现有文件中的数据?
from win32com.client import Dispatch
import os
xl = Dispatch("Excel.Application")
xl.Visible = True # otherwise excel is hidden
# newest excel does not accept forward slash in path
wbs_path = r'C:\path\to\a\bunch\of\workbooks'
for wbname in os.listdir(wbs_path):
if not wbname.endswith(".xlsx"):
continue
wb = xl.Workbooks.Open(wbs_path + '\' + wbname)
sh = wb.Worksheets("name of sheet")
sh.Range("A1").Value = "some new value"
wb.Save()
wb.Close()
xl.Quit()
或者您可以使用 xlwing,这(如果我不得不猜测的话)似乎在幕后使用了这种方法。
>>> import xlwings as xw
>>> wb = xw.Book() # this will create a new workbook
>>> wb = xw.Book('FileName.xlsx') # connect to an existing file in the current working directory
>>> wb = xw.Book(r'C:\path\to\file.xlsx') # on Windows: use raw strings to escape backslashes
我正在尝试找到一个库,该库会覆盖现有单元格以使用 Python 更改其内容。
我想做什么:
- 从 .xlsx 文件读取
- 比较单元格数据以确定是否需要更改。
- 更改单元格中的数据,例如。覆盖单元格 'O2' 中的日期
- 保存文件。
我试过以下库:
- xlsxwriter
- 组合:
- xlrd
- xlwt
- xlutils
- openpyxl
xlsxwriter 仅写入新的 excel sheet 和文件。 组合:可以从 .xlsx 读取但只能写入 .xls openpyxl:从现有文件读取但不写入现有单元格只能创建新行和单元格,或者可以创建整个新工作簿
如有任何建议,我们将不胜感激。其他图书馆?如何操作上面的库来覆盖现有文件中的数据?
from win32com.client import Dispatch
import os
xl = Dispatch("Excel.Application")
xl.Visible = True # otherwise excel is hidden
# newest excel does not accept forward slash in path
wbs_path = r'C:\path\to\a\bunch\of\workbooks'
for wbname in os.listdir(wbs_path):
if not wbname.endswith(".xlsx"):
continue
wb = xl.Workbooks.Open(wbs_path + '\' + wbname)
sh = wb.Worksheets("name of sheet")
sh.Range("A1").Value = "some new value"
wb.Save()
wb.Close()
xl.Quit()
或者您可以使用 xlwing,这(如果我不得不猜测的话)似乎在幕后使用了这种方法。
>>> import xlwings as xw
>>> wb = xw.Book() # this will create a new workbook
>>> wb = xw.Book('FileName.xlsx') # connect to an existing file in the current working directory
>>> wb = xw.Book(r'C:\path\to\file.xlsx') # on Windows: use raw strings to escape backslashes