Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用COM实现Excel词典_Python_Python 2.7_Dictionary_Com - Fatal编程技术网

Python 使用COM实现Excel词典

Python 使用COM实现Excel词典,python,python-2.7,dictionary,com,Python,Python 2.7,Dictionary,Com,我想将字典的结果转储到Excel文件中 我的代码: import datetime my_dict = { u'ID1': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)}, u'ID2': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime

我想将字典的结果转储到Excel文件中

我的代码:

import datetime
my_dict = {
    u'ID1': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID2': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID3': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID4': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)}
    }

import win32com.client as win32
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
wb = excel.Workbooks.Add()
ws = wb.Worksheets('Sheet1')


'add in the projects'
ws.Range(ws.Cells(1,1),ws.Cells(len(my_dict),3)).Value = my_dict
错误:

TypeError: Objects of type 'dict' can not be converted to a COM VARIANT
我的期望输出:


3列数据。列A是ID。B列是与每个ID关联的
Date1
的值。C列是
Date2

的值。我很确定您无法为范围对象编写字典。但是,范围对象将获取列表列表。为了编写您提供的词典,您必须将其重组为元组或列表

import win32com.client
import datetime
xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
my_dict = {
    u'ID1': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID2': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID3': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)},
    u'ID4': {'Date1': datetime.datetime(2014, 11, 14, 0, 0), 'Date2': datetime.datetime(2015, 3, 18, 0, 0)}
    }
wb = xl.Workbooks.Add()
ws = wb.Worksheets('Sheet1')
idKeys = my_dict.keys()
idKeys.sort()
rowCnt = 1
for idKey in idKeys:
    dateKeys = my_dict[idKey].keys()
    dateKeys.sort()
    row = [idKey]
    for dateKey in dateKeys:
        row.append(my_dict[idKey][dateKey])
    rangeObj = ws.Range(ws.Cells(rowCnt,1), ws.Cells(rowCnt, len(row)))
    rangeObj.Value = row
    print 'row:', row
    rowCnt += 1

以上是我快速而肮脏的方法来实现这一点。但是,将数据结构化为列表列表将使此任务更容易。

您不使用“xlutils”()有什么原因吗?