使用Python覆盖XLSX文件中的现有单元格

时间:2015-02-12 17:49:08

标签: python excel read-write

我正在尝试找到一个覆盖现有单元格的库,以便使用Python更改其内容。

我想做什么:

  1. 从.xlsx文件中读取
  2. 比较单元格数据确定是否需要更改。
  3. 更改单元格Eg中的数据。覆盖单元格中的日期' O2'
  4. 保存文件。
  5. 我尝试了以下库:

      • xlsxwriter
    1. 组合:
      • xlrd
      • xlwt
      • xlutils
      • openpyxl
    2. xlsxwriter只会写入新的Excel工作表和文件。 组合:从.xlsx读取,但只写入.xls openpyxl:从现有文件读取但不写入现有单元格只能创建新行和单元格,或者可以创建整个新工作簿

      我们非常感谢任何建议。其他图书馆?如何操作上面的库来覆盖现有文件中的数据?

2 个答案:

答案 0 :(得分:3)

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()

答案 1 :(得分:0)

或者,您可以使用 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