如何使用 Openpyxl 更新现有 Excel .xlsx 文件?

How to update existing Excel .xlsx file using Openpyxl?

我正在尝试使这段代码工作,问题是在 excel 文件中未写入 print (...) 数据,我尝试使用 ws.appened (...) 但没有结果.

import arcpy
from openpyxl import Workbook
wb = Workbook("C:/Users/Hp/Desktop/ejemplo/VINCULACION_S.xlsx")
ws =  wb.active
rows = arcpy.SearchCursor("C:/Users/Hp/Desktop/ejemplo/VH_Dissolve.shp",
                          fields="COLOR; INTERNO_DE; CLASE_DEMA; COUNT_AREA; SUM_AREA; SUM_LENGTH",
                          sort_fields="COLOR 222; INTERNO_DE A")
# COLOR, INTERNO_DE, CLASE_DEMA, COUNT_AREA, SUM_AREA y SUM_LENGTH.
for row in rows:
    print("Color: {0}, Interno: {1}, Clase:{2}, ContarA: {3}, SumarA: {4}, SumarL: {5}".format(
        row.getValue("COLOR"),
        row.getValue("INTERNO_DE"),
        row.getValue("CLASE_DEMA"),
        row.getValue("COUNT_AREA"),
        row.getValue("SUM_AREA"),
        row.getValue("SUM_LENGTH")))
wb.save('VINCULACION_S.xlsx')

我也曾尝试在 excel 文件中从单元格 B3:G3 开始查找结果数据,但找不到。

我得到这段代码作为 post

的解决方案
import arcpy
import openpyxl as px

def main():
    wb = px.load_workbook(r"C:\Users\Hp\Desktop\Ejemplo\VINCULACION_S.xlsx")
    ws = wb['VINCULACION_SH_NUE']
    in_features = r"C:\Users\Hp\Desktop\Ejemplo\VH_Dissolve.shp"

    row_num = 3
    with arcpy.da.SearchCursor(
        in_features,
        ["COLOR", "INTERNO_DE", "CLASE_DEMA", "COUNT_AREA", "SUM_AREA", "SUM_LENGTH"],
    ) as cursor:
        for row in cursor:
            ws.cell(row=row_num, column=2).value = row[0]
            ws.cell(row=row_num, column=3).value = row[1]
            ws.cell(row=row_num, column=4).value = row[2]
            ws.cell(row=row_num, column=6).value = row[3]
            ws.cell(row=row_num, column=7).value = row[4]
            ws.cell(row=row_num, column=8).value = row[5]
            row_num += 1
    wb.save(r"C:\Users\Hp\Desktop\Ejemplo\VINCULACION_S.xlsx")


if __name__ == "__main__":
    main()

尝试删除现有 sheet 中的内容。保存并重新加载。

import arcpy
from openpyxl import Workbook
wb = Workbook("C:/Users/Hp/Desktop/ejemplo/VINCULACION_S.xlsx")
ws =  wb.active
k = 100     # approximate no of rows in existing sheet
for i in range(k):
    ws.delete_rows(0)
wb.save()
wb = load_workbook("C:/Users/Hp/Desktop/ejemplo/VINCULACION_S.xlsx")
ws = wb.active