我想使用OpenPyXL搜索工作簿,但我遇到了一些我希望有人可以提供帮助的问题。
以下是一些障碍/待办事项:
我是Python的新手,那么有人能指出我正确的方向吗?示例代码是值得赞赏的,因为此时我知道如何做的是搜索已知工作簿,使用已知的工作表名称,然后打印数据。在迭代工作表时,我不知道如何包含通配符。细胞。
我做了什么来展示细胞的内容:
from openpyxl import load_workbook, worksheet
def main():
#read workbook to get data
wb = load_workbook(filename = 'Book1_test.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1')
#ws = wb.worksheets
#Iterate through worksheet and print cell contents
for row in ws.iter_rows():
for cell in row:
print cell.value
#Iterate through workbook & print worksheets
#for sheet in wb.worksheets:
# print sheet
if __name__ == '__main__':
main()
-----------------------更新----------------------- -
我能够搜索单元格并从单元格中提取服务器名称,但是我无法保存电子表格,因为我处于只读模式。当我尝试切换到optimized_write = True时,我收到错误:
AttributeError:'ReadOnlyCell'对象没有属性'upper'
这是我的代码:
from openpyxl import load_workbook, worksheet, Workbook
def main():
#read workbook to get data
wb = load_workbook(filename = 'Book1_test.xlsx', use_iterators = True)
ws = wb.get_sheet_by_name(name = 'Sheet1')
#ws = wb.worksheets
#Iterate through worksheet and print cell contents
for row in ws.iter_rows():
for cell in row:
cellContent = str(cell.value)
#Scans the first 14 characters of the string for the server name
if cellContent[:14] == '\\\\file-server\\':
#open workbook in write mode?
wb = Workbook(optimized_write=True)
ws = wb.create_sheet()
#update cell content
ws[cell] = '\\\\file-server1\\' + cellContent[14:]
print cellContent[:14]
#save workbooks
wb.save('Book1_test.xlsx')
if __name__ == '__main__':
main()
有谁知道如何更新单元格内容?
答案 0 :(得分:2)
为什么不阅读文档?如果您只是打开没有标记的工作簿,则可以编辑它。
的副本答案 1 :(得分:1)
我认为你不能更新单元格内容。您可以打开要读取的文件,或打开要写入的新文件。 我认为您必须创建一个新的工作簿,并且您阅读的每个单元格,如果您选择不修改它,请将其写入您的新工作簿。在您的示例代码中,您使用wb(用于写入)覆盖wb(用于读取)。将其拉出for循环,为其指定一个不同的名称。
答案 2 :(得分:1)
您可以更新单元格中的内容。您需要指定一个值:
workBook = load_workbook('example.xlsx')
sheet = workBook.get_sheet_by_name('sheet')
a = sheet.cell(row=i,column=j)
a.value = 'nuevo valor'
然后保存:
workBook.save('example.xlsx')
答案 3 :(得分:-1)
通过这样的行(作为一个想法)起作用:
sheet = wb.create_sheet(index = 1, title = 'Hipster') # name of the obj. sheet
for counter in range(1,11):
sheet['A'+ str(counter)] = 'Hola'