簡體   English   中英

在Excel中創建新工作表並使用openpyxl寫入數據

[英]Creating new sheet in excel and writing data with openpyxl

我已經有一個excel文件,在代碼的開頭,我從第一張紙中導入數據。

現在,我無法將兩個變量(xw, yw)點寫入excel中的兩個新列(A1-A [Q]和B1-B [Q])。

xwyw是由浮點數組成的數組(例如:1.223、2.434等)。

Q = len(xw)
wb.create_sheet('Points')
sheet2 = wb.get_sheet_by_name('Points')
for q in range(1,Q):
    sheet2["A[q]"]=xw[q]
    sheet2["B[q]"]=yw[q]
wb.save('PARAMS.xlsx') 

編輯:

我想用零(C1-CQ)填充第三列。 我的代碼在下面,但是它是從C2而不是C1開始的。 我做了sheet2[f"C{1}"]=0但是看起來很糟糕。 解決辦法是什么?

Q = len(xw)
zw= np.zeros(Q)
sheet2 = wb.create_sheet('Points')
sheet2[f"A{1}"]=0
sheet2[f"B{1}"]=T_r
sheet2[f"C{1}"]=0
for i, row in enumerate(sheet2.iter_rows(min_row=2, max_col=3, max_row=Q+1)):
    row[0].value = xw[i]
    row[1].value = yw[i]
    row[2].value = zw[i]
wb.save('PARAMS.xlsx')

您試圖從字面上訪問單元格"A[q]" ,該單元格當然不存在。 將其更改為f"A{q}" (當然與B相同)。

另外, openpyxl使用基於1的索引,因此這意味着您將跳過列表中的第一個元素。 因此,您應該執行以下操作:

for q in range(Q):
    sheet2[f"A{q+1}"] = xw[q]
    sheet2[f"B{q+1}"] = yw[q]

另外,您可以使用openpyxl的API通過iter_rowsenumerate來訪問單元格:

for i, row in enumerate(sheet2.iter_rows(min_row=1, max_col=2, max_row=Q)):
    row[0].value = xw[i]
    row[1].value = yw[i]

請注意, create_sheet返回創建的工作表,因此您可以執行以下操作:

sheet2 = wb.create_sheet('Points')

盡可能嘗試避免使用自己的計數器。 openpyxl對行和列使用基於1的索引,因此將其與Python的基於0的標准索引混在一起可能會造成混淆。 通常,您可以通過直接遍歷列表和數組等可迭代對象來避免這種情況。

for idx, a, b in enumerate(zip(xw, yw), 1):
   ws.cell(row=idx, column=1, value=a)
   ws.cell(row_idx, column=2, value=b) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM