Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将结果写入excel B列_Python_Xlrd_Goslate - Fatal编程技术网

Python 将结果写入excel B列

Python 将结果写入excel B列,python,xlrd,goslate,Python,Xlrd,Goslate,下面的代码当前将Excel工作表中的每个单词翻译为A列中的单词位置,但它当前在编辑器中给出的结果是,但我希望翻译后的输出/结果位于B列中的同一Excel工作表中。下面的代码给出了一个错误。 请帮助我在B列中用excel编写结果的代码 import xlrd import goslate loc = r"C:\path\fruits.xlsx" gs = goslate.Goslate() wb = xlrd.open_workbook(loc) sheet = wb.s

下面的代码当前将Excel工作表中的每个单词翻译为A列中的单词位置,但它当前在编辑器中给出的结果是,但我希望翻译后的输出/结果位于B列中的同一Excel工作表中。下面的代码给出了一个错误。 请帮助我在B列中用excel编写结果的代码

import xlrd
import goslate

loc = r"C:\path\fruits.xlsx"
gs = goslate.Goslate()

wb = xlrd.open_workbook(loc) 
sheet = wb.sheet_by_index(0)
  
for i in range(sheet.nrows): 
    print(gs.translate(sheet.cell_value(i, 0), 'de'))
    print(sheet.cell_value(i, 1)
我收到以下错误

 return self._cell_values[rowx][colx]
IndexError: list index out of range

请有人帮助我将我的输出/结果写入同一excel中的B列

错误是因为您没有a
B
为空,并且软件包没有从工作表中读取该列

要将转换后的结果写入工作表,可以执行以下操作:

import openpyxl
import goslate

loc = r"C:\path\fruits.xlsx"
gs = goslate.Goslate()

wb = openpyxl.load_workbook(loc)
sheet = wb.active

for i in range(2, sheet.max_row + 1):
    original = sheet.cell(row=i, column=1).value
    translated = gs.translate(original, 'de')
    sheet.cell(row=i, column=2).value = translated
    
wb.save(loc)
我认为
xlrd
无法写入工作表。您需要使用
xlwt
软件包。您需要安装它
pip install xlwt

导入xlrd
导入xlwt#此包将写入工作表
进口goslate
loc=“dummy.xlsx”
translated=“dummy2.xlsx”#存储修改后的工作表的位置
gs=goslate.goslate()
#使用xlwt包装入工作簿以便写入。
wbt=xlwt.Workbook()#这里有一个输入错误。这应该是wbt
ws=wbt.add_sheet(“测试表”)#将其更改为您的工作表名称
rwb=xlrd.open_工作簿(loc)
工作表=工作表。工作表按索引(0)
对于范围内的i(图纸编号):
ws.write(i,0,sheet.cell_值(i,0))35;这将写入A列值
write(i,1,gs.translate(sheet.cell_值(i,0),'de'))#这将写入B列值
wbt.save(translated)#这将保存工作表。

至于在同一个文件中进行更改,我认为您不应该这样做。文件已由另一个进程以读取模式打开。更改它可能会导致意外行为。但是,如果您打算这样做,请备份您的文件,并在读取和保存文件时设置loc。

您会收到错误,因为xlrd地址列是基于零的,并且根据文档,xlrd会忽略没有数据的单元格

因此,您可以通过执行以下操作来访问列A

sheet.cell_value(i, 0)
并通过执行以下操作写入B列

sheet._cell_types[i][1] = xlrd.XL_CELL_TEXT
sheet._cell_values[i][1] = source
但是
xlrd
仅用于读取,因此您必须使用
xlwt
保存任何更改

保存更改会带来另一个问题,您的源文件扩展名是“.xlsx”,而
xlrd
读取此格式,
xlwt
仅写入较旧的“.xls”格式

要使用一个库读取和写入“.xlsx”格式,您可以使用
openpyxl
,使用此库,您的代码如下所示:

import openpyxl
import goslate

loc = r"C:\path\fruits.xlsx"
gs = goslate.Goslate()

wb = openpyxl.load_workbook(loc)
sheet = wb.active

for i in range(2, sheet.max_row + 1):
    original = sheet.cell(row=i, column=1).value
    translated = gs.translate(original, 'de')
    sheet.cell(row=i, column=2).value = translated
    
wb.save(loc)

当我运行此代码时,我从_decimalimport*AttributeError中得到以下错误
:模块'numbers'没有属性'Number'
检查此答案我在跟踪后跟踪了此链接,当我运行此代码时收到此错误
NameError:name'wbt'未定义
修复了答案中的一个打字错误。如何工作?您遇到的错误是什么?此代码不起作用,请给出以下错误
回溯(最近一次调用上次):文件“c:\Users\userid\translation.py”,第14行,在translated=gs.translate(source,'de')NameError:name“source”未在该行定义
source
应该是
原始的
,我修正了密码作为回答。