簡體   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