簡體   English   中英

直接在databricks中使用openpyxl修改xlsx文件,無需pandas/dataframe

[英]Modifying the xlsx file using openpyxl in databricks directly without pandas/dataframe

import openpyxl
input_workbook1 = openpyxl.load_workbook('/dbfs/FileStore/Test/my_excel.xlsx')
sheet_1 = input_workbook1.active
sheet_1['A2'] = 'A2'
input_workbook1.save('/dbfs/FileStore/Test/Output.xlsx')  
OSError: [Errno 95] Operation not supported

我嘗試在 databricks 中使用 openpyxl 直接讀取 excel 文件,我可以在沒有 pandas/dataframes 的情況下直接讀取和修改,但是當我試圖保存上面代碼中的最后一行時,我面臨這個問題。 我嘗試了完全相同的方法,但遇到了上述錯誤,誰能幫助我

我嘗試執行相同的程序,但它給了我相同的錯誤OSError: [Errno 95] Operation not supported。 這樣做的原因是隨機寫入在本地文件系統上不起作用,這里是微軟官方文檔(本地文件 API 限制),它提到了這個問題。

因此,不要嘗試寫入本地文件系統,而是將文件寫入/databricks/driver/路徑,然后將文件copy/move到所需目錄。

修改您的代碼如下:

import openpyxl
input_workbook1 = openpyxl.load_workbook('/dbfs/FileStore/Test/my_excel.xlsx')
sheet_1 = input_workbook1.active
sheet_1['A2'] = 'A2'
input_workbook1.save('Output.xlsx')
#will be saved to '/databricks/driver/'.
#Use dbutils.fs.ls('/databricks/driver/') to view.
from shutil import move
move('/databricks/driver/Output.xlsx','/dbfs/FileStore/Test/')

參考1

wb1 = openpyxl.load_workbook('/dbfs/FileStore/Output.xlsx')
ws1 = wb1.active
for row in ws1.iter_rows():
    print([col.value for col in row])

參考2

上面的代碼將成功地將您的文件移動到所需的路徑,而不會出現任何錯誤。

暫無
暫無

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

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