# How to use Data.ExportExcel method in a python scipt

**URL:** <https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709>\
**Category:** Revit\
**Tags:** excel, python, dynamo\
**Created:** [December 26, 2020, 10:11pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709 "2020-12-26T22:11:18Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![davidchivi](https://avatars.discourse-cdn.com/v4/letter/d/51bf81/32.png) [@davidchivi](https://forum.dynamobim.com/u/davidchivi)\
**Post date:** [December 26, 2020, 10:11pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/1 "2020-12-26T22:11:18Z")

</div>

Hi,  
I was trying to use the Data.ExportExcel to write an excel file directly from a python script in Dynamo but I couldn’t use the method (the compiler said that Data is not defined). Should I import a specific library in my python script in order to use this function?

---

<div class="post-metadata">

**Author:** ![Daan](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/daan/32/82246_2.png) [@Daan](https://forum.dynamobim.com/u/Daan)\
**Post date:** [December 26, 2020, 10:50pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/2 "2020-12-26T22:50:22Z")

</div>

Hi @davidchivi,

The Node Data.ExportExcel is a Dynamo Node, you can’t use those nodes in a Python Script because they are written in another language/ they are not stand-alone functions.

I think it would be possible to create something similar through Python but you would have to access/ learn the Excel API to do this.

Also, why would you want to do this?

Nevertheless, this might help:

> [@Excel Fill Color](https://forum.dynamobim.com/t/excel-fill-color/46984/11):
>
> All, Thank you for your help and comments. A Coworker and I were able to get what we needed. @c.poupin your code was extremely helpful. The modification is not beautiful but get the job done for now and what we need. I will hopefully clean up the script in the near future. #https://forum.dynamobim.com/t/excel-fill-color/46984/5 # coding: utf-8 import clr clr.AddReference('ProtoGeometry') from Autodesk.DesignScript.Geometry import \* import System from System import Array …

---

<div class="post-metadata">

**Author:** ![davidchivi](https://avatars.discourse-cdn.com/v4/letter/d/51bf81/32.png) [@davidchivi](https://forum.dynamobim.com/u/davidchivi)\
**Post date:** [December 27, 2020, 1:29am UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/3 "2020-12-27T01:29:55Z")

</div>

Thank you, I will give a look to your suggestion

---

<div class="post-metadata">

**Author:** ![leonard.moelders](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/leonard.moelders/32/108216_2.png) [@leonard.moelders](https://forum.dynamobim.com/u/leonard.moelders)\
**Post date:** [April 1, 2022, 2:10pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/4 "2022-04-01T14:10:22Z")

</div>

@davidchivi It is possible! I just figured out how to do it:

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/d/3/d3b450e1f0c6466f2357323508e30554ea70f7eb.png)

Here is the python code:

```auto
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import List as IList
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager 
from RevitServices.Transactions import TransactionManager 

clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")

import Autodesk 
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication 
app = uiapp.Application 
uidoc = uiapp.ActiveUIDocument

clr.AddReference("DSOffice")
import DSOffice
from DSOffice import *

filePath = IN[0]
sheetName = IN[1]
startRow = IN[2]
startCol = IN[3]
data = IN[4]
overWrite = False

list = []
for l in list:
	list.append(Array[object](l))

list2 = Array[object](list)	
list3 = Array[Array[object]](list2)

DSOffice.Data.ExportExcel(filePath, sheetName, startRow, startCol, list3, overWrite)

```

---

<div class="post-metadata">

**Author:** ![ruben.romero](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/ruben.romero/32/115842_2.png) [@ruben.romero](https://forum.dynamobim.com/u/ruben.romero)\
**Post date:** [June 9, 2022, 7:31am UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/5 "2022-06-09T07:31:27Z")

</div>

> [@leonard.moelders](#):
>
> ```auto
> filePath = IN[0]
> sheetName = IN[1]
> startRow = IN[2]
> startCol = IN[3]
> data = IN[4]
> overWrite = False
> 
> list = []
> for l in list:
> list.append(Array[object](l))
> 
> list2 = Array[object](list)	
> list3 = Array[Array[object]](list2)
> 
> DSOffice.Data.ExportExcel(filePath, sheetName, startRow, startCol, list3, overWrite)
> 
> ```

hello @leonard.moelders I was writting very similar script but I got a warning telling me the data is not an array[object]  
 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/c/f/cfe7ac94fdb538bee5c9c1b640a64bfc5df258d6.png)

regarding this issue I can see you created a definition of a list3 but I would change it like:  
“for l in list:” as “for l in **data** :”

---

<div class="post-metadata">

**Author:** ![leonard.moelders](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/leonard.moelders/32/108216_2.png) [@leonard.moelders](https://forum.dynamobim.com/u/leonard.moelders)\
**Post date:** [June 13, 2022, 6:59am UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/6 "2022-06-13T06:59:43Z")

</div>

Oh yes. My bad. I will change that in my post 👍

```auto
import clr
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import System
from System import Array
from System.Collections.Generic import List as IList
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager 
from RevitServices.Transactions import TransactionManager 

clr.AddReference("RevitAPI")
clr.AddReference("RevitAPIUI")

import Autodesk 
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import *

doc = DocumentManager.Instance.CurrentDBDocument
uiapp = DocumentManager.Instance.CurrentUIApplication 
app = uiapp.Application 
uidoc = uiapp.ActiveUIDocument

clr.AddReference("DSOffice")
import DSOffice
from DSOffice import *

filePath = IN[0]
sheetName = IN[1]
startRow = IN[2]
startCol = IN[3]
data = IN[4]
overWrite = False

list = []
for l in data:
	list.append(Array[object](l))

list2 = Array[object](list)	
list3 = Array[Array[object]](list2)

DSOffice.Data.ExportExcel(filePath, sheetName, startRow, startCol, list3, overWrite)

```

---

<div class="post-metadata">

**Author:** ![AM3D.BIM.STUDIO](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/am3d.bim.studio/32/127441_2.png) [@AM3D.BIM.STUDIO](https://forum.dynamobim.com/u/AM3D.BIM.STUDIO)\
**Post date:** [September 20, 2023, 6:02pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/7 "2023-09-20T18:02:59Z")

</div>

Could you help me… it doesn’t work for me and I get an error on line 49

 ![EXPORTAR A EXCEL PYTHON](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/f/e/feabdfea96f112fdaf2297edf38507a627729dfa.png)

---

<div class="post-metadata">

**Author:** ![c.poupin](https://sea2.discourse-cdn.com/flex022/user_avatar/forum.dynamobim.com/c.poupin/32/89152_2.png) [@c.poupin](https://forum.dynamobim.com/u/c.poupin)\
**Post date:** [September 20, 2023, 7:40pm UTC](https://forum.dynamobim.com/t/how-to-use-data-exportexcel-method-in-a-python-scipt/58709/8 "2023-09-20T19:40:12Z")

</div>

Hi @AM3D.BIM.STUDIO

the method accept only a string for the `sheetName` parameter

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/c/8/c813bba3c241daedd816130d3205d1e55f958ba9.png)

so you need to implement a loop for multiple sheet Name, like this

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/6/6/66120cd404bb79777692cd57461c3483a29ba767.png)

or like this if you need to write different data by sheet

 ![image](https://us1.discourse-cdn.com/flex022/uploads/dynamobim/original/3X/d/0/d054f5a97e87f7a55f2b1ef167d14e306a9f40a4.png)
