从Python中读取Excel复选框

时间:2018-01-29 14:28:56

标签: python excel parsing openpyxl

我想从Python脚本中读取Excel工作表中的数据,并使用读取的数据填充XML文件。不幸的是,Excel工作表/表单包含复选框和下拉列表。我无法使用下面的代码从其单元格中获取下拉列表的值。

>> out{1}
ans = 
  struct with fields:
    val1: 10
    val2: 70

>> out{2}
ans = 
  struct with fields:
    val1: 1000
    val2: 2050

有人知道解析复选框等Excel元素和使用Python下拉列表的方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用win32com来运行Excel(假设您的计算机上有Windows和Excel),而不是使用读取Excel文件的库。然后,您可以使用VBA文档来帮助您浏览Excel。

我必须使用包含与单元格无关的复选框的电子表格来执行此操作。所有复选框都有默认名称(例如"复选框1和#34;),所以我按名称搜索它们。

from win32com.client import gencache

excel = gencache.EnsureDispatch('Excel.Application')
wb = excel.Workbooks.Open(r"C:\Temp\MySpreadsheet.xlsx")
ws = wb.Worksheets.Item(1)
print('Shape count: %s' % len(ws.Shapes))
for shape in ws.Shapes:
    if shape.Type == 8: # form control
        if 'Check Box' in shape.Name:
            print('%s: %s' % (shape.AlternativeText, shape.ControlFormat.Value))

显然,复选框的值为1.0(true)或-4146(false)。

您可以轻松获取其他信息,例如工作表的名称或单元格的值。

print(ws.Name)
print(ws.Range('C10'))