python - 如何在 OpenPyXl 运行时通过变量名更改为特定工作表?
问题描述
所以我想做的是做一个翻译程序。我想读取要翻译的文本文件的文件名,然后在我的工作簿中查找同名的工作表。示例:TranslateMe.txt -> 使用 TranslateMe.txt 查找工作表名称
问题是,我似乎无法使用真实字符串更改工作表的字符串值。
sheet = wb.get_sheet_by_name(wb.sheetnames[0])
它给了我一个错误:当我尝试更改它时,'str' 对象没有属性'cell'。我将发送我的代码
我尝试将值更改为字符串,但它在运行时不起作用......
import openpyxl
import glob
import os
import fileinput
import codecs
currentDir = os.path.dirname(os.path.realpath(__file__)) # Sets path to this place
txtFile = "" # The txt-file that is about to be translated.
# I use this string value to try to change sheet value
wb = openpyxl.load_workbook('Translate.xlsx')
sheet = wb.get_sheet_by_name(wb.sheetnames[0])
# Define amount of rows and columns in current Sheet
rows = sheet.max_row
columns = sheet.max_column
# Languages: 1 = placeholders, 2 = English, 3 = Greek, 4 = Swedish
language = 2
def FindFilesForTranslation():
filesToTranslateNames = []
global txtFile
global sheet
for file in glob.glob("*.txt"):
print(file)
filesToTranslateNames.append(file)
print(filesToTranslateNames)
for i in range(len(filesToTranslateNames)):
print(i)
txtFile = filesToTranslateNames[i]
if sheet != filesToTranslateNames[0]: # Underlying problem
sheet = filesToTranslateNames[i]
print("TxtFile Name: ", txtFile, "Sheet: ", sheet)
TranslateFiles()
def TranslateFiles():
for row in range(1, rows+1):
for col in range(1, columns+1):
# Make sure that col does not exceed the value of language
if col >= language:
col = language
wordToReplace = sheet.cell(row=row, column=col).value # THIS IS WHERE THE ERROR LIES!
replacerWord = sheet.cell(row=row, column=language).value # same #error over here
所以每当我到达 wordToReplace = sheet.cell 代码行时,我都会收到运行时错误:'str' object has no attribute 'cell'
找到我正在翻译的文件的特定名称很重要,因为工作表不会按特定顺序排列,并且无法通过逻辑 for 循环找到。那么如何在运行时使用 txtFile 字符串更改该变量表的值???
对不起,一个奇怪和半不连贯的帖子。这是我在 Stackoverflow 上的第一篇文章。谢谢你的帮助!
编辑:我刚刚发现我在运行时更改了工作表的字符串值。但是,由于某种原因,“'str' object has no attribute 'cell'”运行时错误
解决方案
我解决了我自己的问题,如果你像我一样犯了一个愚蠢的错误,这里是答案:
sheet = filesToTranslateNames[i]
应该
sheet.active = filesToTranslateNames[i]
感谢您发布的答案,你们会的!
推荐阅读
- apache-kafka - 从 Postgres 表到具有更新跟踪的 KSQL 表
- pine-script - 首支蜡烛收盘价
- nginx - 当 2 个域指向同一服务器时,HTTPS Nginx 重定向过多
- qt - QT QML 没有动态调整大小
- r - 如何在 R 的另一个数据框中获取我正在寻找的值的行和列
- cassandra - 三节点 Cassandra 集群所有节点在同一个 dc 中配置不同的机架
- angular - Angular Firestore 使用两个相等的 where 条件查询集合
- amazon-web-services - 为什么不能在域名上配置 AWS 安全组
- mongodb - Mongoose - 查询 Mongo 对象数组,匹配搜索数组中的任何对象
- c - 从不同的功能插入 GLib 树