繁体   English   中英

结果要写在excel列B中

[英]results to be written in excel column B

下面的代码当前将 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

请有人帮我在 B 列的同一个 excel 中写出我的输出/结果

错误是因为您没有B为空并且包未从工作表中读取列。

要将翻译结果写入工作表,您可以执行以下操作:

我不认为xlrd可以写入工作表。 您将需要使用xlwt包。 您将需要安装它pip install xlwt

import xlrd
import xlwt # this package is going to write to sheet
import goslate
loc = "dummy.xlsx"
translated = "dummy2.xlsx" # location to where store the modified sheet

gs = goslate.Goslate()

# crate a workbook using xlwt package in order to write to it.
wbt = xlwt.Workbook() # there is a typo here. this should be wbt
ws = wbt.add_sheet('A Test Sheet') # change this to your sheet name

rwb = xlrd.open_workbook(loc) 
sheet = wb.sheet_by_index(0)
  
for i in range(sheet.nrows): 
    ws.write(i, 0, sheet.cell_value(i, 0)) # this will write the A column value
    ws.write(i, 1, gs.translate(sheet.cell_value(i, 0), 'de')) # this will write the B column value

wbt.save(translated) # this will save the sheet.

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM