Blog
How to use Application.GetCustomListNum in the xlwings API way
The GetCustomListNum member of the Application object in Excel is a method used to retrieve the index number of a custom list that has been defined in the Excel application. Custom lists are often utilized for sorting data in a user-defined order, such as days of the week or months, and they can also be used in functions like MATCH or VLOOKUP to align data with these custom sequences. In xlwings, this functionality is accessible through the api property, which provides direct access to the underlying Excel object model. This method is particularly useful when you need to programmatically determine the position of a specific list within Excel’s custom list collection, enabling dynamic interactions with list-based operations.
FunctionalityGetCustomListNum returns a numeric value representing the index of a custom list based on a provided list array. If the specified list matches one of the custom lists defined in Excel, the method returns its index number (starting from 1 for the first custom list). If no match is found, it returns 0. This can assist in validating or identifying custom lists before performing operations like sorting or data alignment.
Syntax
In xlwings, the method is called via the Application object. The syntax is:
index = xw.apps[0].api.GetCustomListNum(list_array)
list_array: This is a required parameter that specifies the list to be checked. It should be passed as an array or range of values. In xlwings, you can use a Python list or an Excel range object. For example, a Python list like["Mon", "Tue", "Wed"]or an xlwings range likesheet.range("A1:A3").value.
Parameters and Values
The list_array parameter must be a one-dimensional array of strings or numbers that correspond to the custom list entries in Excel. Excel stores custom lists in a specific order, and the method compares the input array to these stored lists. Note that custom lists are case-insensitive in Excel, so the matching process ignores letter case. If the input array is empty or invalid, the method may return an error or 0.
Code Examples
Here are some xlwings API code instances demonstrating the use of GetCustomListNum:
- Basic Example with a Python List: Check if a custom list for weekdays exists and get its index.
import xlwings as xw
# Connect to the active Excel instance
app = xw.apps.active
# Define a list to check (e.g., weekdays)
list_to_check = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]
# Get the custom list index
list_index = app.api.GetCustomListNum(list_to_check)
print(f"The custom list index is: {list_index}")
# Output might be 1 if this is the first custom list, or 0 if not found.
- Using an Excel Range as Input: Retrieve data from a worksheet and check if it matches a custom list.
import xlwings as xw
# Open a workbook and reference a sheet
wb = xw.Book("example.xlsx")
sheet = wb.sheets["Sheet1"]
# Get values from a range (e.g., cells A1:A5)
range_values = sheet.range("A1:A5").value
# Ensure it's a flat list (xlwings returns a list of lists for 2D ranges)
if isinstance(range_values[0], list):
range_values = [item for sublist in range_values for item in sublist]
# Check for custom list match
app = xw.apps.active
list_index = app.api.GetCustomListNum(range_values)
if list_index > 0:
print(f"Custom list found at index: {list_index}")
else:
print("No matching custom list found.")
- Dynamic List Validation: Before sorting data, verify that a custom list exists to avoid errors.
import xlwings as xw
app = xw.apps.active
custom_list = ["Low", "Medium", "High"] # Example priority list
index = app.api.GetCustomListNum(custom_list)
if index == 0:
print("Warning: Custom list not defined. Consider adding it in Excel options.")
else:
# Proceed with sorting or other operations using the list index
print(f"Using custom list index {index} for sorting.")
How To Set Chart Area Using xlwings?
【Method】
The chart area is the rectangular area that contains the entire chart, while the plot area is the rectangular area defined by the two axes. In Excel, the chart area is represented by the `ChartArea` object, and the plot area is represented by the `PlotArea` object. You can access these areas using the `ChartArea` and `PlotArea` properties of the `Chart` object.
By continuously referencing the `ChartArea` and `PlotArea` objects’ `Format.Fill` property, you can set the fill properties of both areas, such as their color, transparency, gradient fills, pattern fills, picture fills, texture fills, etc.
Using the `Format.Shadow` property of the `ChartArea` and `PlotArea` objects, you can set additional shadow properties for these areas. The `Format.Shadow` property returns a `ShadowFormat` object with the following main properties:
– **Visible**: Determines whether the shadow is visible.
– **Blur**: Gets or sets the blur radius of the shadow.
– **Transparency**: Gets or sets the transparency of the shadow (from 0.0 for opaque to 1.0 for fully transparent).
– **OffsetX**: Gets or sets the horizontal offset of the shadow in points. Positive values shift the shadow to the right, while negative values shift it to the left.
– **OffsetY**: Gets or sets the vertical offset of the shadow in points. Positive values shift the shadow downward, while negative values shift it upward.
sht.api.Range(‘A1:B7’).Select()
cht=sht.api.Shapes.AddChart().Chart
cha=cht.ChartArea #Chart Area
cha.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((155,255,0))
cha.Shadow=True #Plot area shows shadow
pla=cht.PlotArea #Plot area
pla.Format.Fill.UserPicture(root+r’/picpy2.jpg’) #Picture fill
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
cht.Axes(2).HasMajorGridlines=False
cha.Shadow=False
pla.Format.Shadow.Visible=True #Plot area shows shadow
pla.Format.Shadow.OffsetX=3 #Horizontal offset of the shadow
pla.Format.Shadow.OffsetY=3 #Vertical offset of the shadow
【Example】

【Code】
import xlwings as xw
import os
def set_style(cht):
cht.ChartArea.Format.Line.Visible=False
cht.PlotArea.Format.Fill.Visible=True
cht.PlotArea.Format.Line.Visible=True
cht.PlotArea.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((200,200,200))
#cht.PlotArea.Format.Line.ForeColor.ObjectThemeColor = msoThemeColorText1
ax1=cht.Axes(1)
ax2=cht.Axes(2)
ax1.HasTitle=True
ax1.AxisTitle.Text='Categories'
ax1.AxisTitle.Font.Size=10
ax1.AxisTitle.Font.Color = xw.utils.rgb_to_int((255,255,255))
ax1.TickLabels.Font.Size=8
ax1.TickLabels.Font.Color = xw.utils.rgb_to_int((255,255,255))
#ax1.TickLabels.NumberFormat='0.00'
ax1.HasMajorGridlines=False
ax2.HasTitle=True
ax2.AxisTitle.Text='Values'
ax2.AxisTitle.Font.Size=10
ax2.AxisTitle.Font.Color = xw.utils.rgb_to_int((255,255,255))
ax2.TickLabels.Font.Size=8
ax2.TickLabels.Font.Color = xw.utils.rgb_to_int((255,255,255))
ax2.HasMajorGridlines=False
cht.HasTitle=True
#cht.ChartTitle.Caption='Plot'
#cht.ChartTitle.Font.Size=12
root=os.getcwd()
app=xw.App(visible=True,add_book=False)
wb=app.books.open(root+r'/data.xlsx',read_only=False)
sht=wb.sheets('Sheet1')
sht.api.Range('A1:B7').Select() #
cht=sht.api.Shapes.AddChart2(-1, \
xw.constants.ChartType.xlColumnClustered,20,20,350,250,True).Chart
cht.ChartArea.Format.Fill.UserPicture('d:/pic.jpg')
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
set_style(cht)
cht.Legend.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,255))
cht.Export(root+'/cht.jpg')
cht.Export(root+'/cht.svg')
cht.ExportAsFixedFormat(0,root+'/cht.pdf')
#wb.save()
#app.kill()

How to use Application.GetCustomListContents in the xlwings API way
The GetCustomListContents member of the Application object in Excel is a method that retrieves the contents of a custom list. Custom lists are used for custom sorting or filling series, such as a list of department names, weekdays, or months in a specific language order. In xlwings, this method allows Python scripts to access these lists programmatically, enabling dynamic data processing and automation based on user-defined sequences. This is particularly useful for applications that require consistent sorting or pattern generation across different Excel workbooks or when integrating Excel data with other systems.
Syntax:
In xlwings, the GetCustomListContents method is accessed through the app object, which represents the Excel application. The syntax is as follows:
contents = app.api.GetCustomListContents(ListNum)
- ListNum: An integer parameter that specifies the index number of the custom list. In Excel, custom lists are indexed starting from 1. For example, built-in lists like days of the week or months may have specific indices, but user-defined lists are assigned indices based on their creation order. To determine the index of a custom list, you can check Excel’s options under “Advanced” > “General” > “Edit Custom Lists,” where lists are displayed in order, or use VBA to loop through lists programmatically. The method returns a string containing the list items, separated by commas.
Example:
Suppose you have a custom list in Excel containing the sequence “North, South, East, West” for sorting regional data. You can retrieve this list using xlwings to use it in a Python script for data analysis. Here’s a code example:
import xlwings as xw
# Connect to the active Excel application
app = xw.apps.active
# Assume the custom list is the first user-defined list (index might be 5 or higher, depending on built-in lists)
# In practice, you might need to determine the index dynamically
list_num = 5 # Example index; adjust based on your Excel setup
list_contents = app.api.GetCustomListContents(list_num)
# Output the retrieved list
print("Custom list contents:", list_contents)
# Split the string into a list for further processing
items = list_contents.split(',')
print("List items:", items)
# Use the list for sorting a pandas DataFrame, for instance
import pandas as pd
data = {'Region': ['South', 'East', 'North', 'West']}
df = pd.DataFrame(data)
# Create a categorical type based on the custom list for sorting
df['Region'] = pd.Categorical(df['Region'], categories=items, ordered=True)
df_sorted = df.sort_values('Region')
print("Sorted DataFrame:")
print(df_sorted)
How To Set Plot Area Using xlwings? 2
【Method】
The chart area is the rectangular area that contains the entire chart, while the plot area is the rectangular area defined by the two axes. In Excel, the chart area is represented by the `ChartArea` object, and the plot area is represented by the `PlotArea` object. You can access these areas using the `ChartArea` and `PlotArea` properties of the `Chart` object.
By continuously referencing the `ChartArea` and `PlotArea` objects’ `Format.Fill` property, you can set the fill properties of both areas, such as their color, transparency, gradient fills, pattern fills, picture fills, texture fills, etc.
Using the `Format.Shadow` property of the `ChartArea` and `PlotArea` objects, you can set additional shadow properties for these areas. The `Format.Shadow` property returns a `ShadowFormat` object with the following main properties:
– **Visible**: Determines whether the shadow is visible.
– **Blur**: Gets or sets the blur radius of the shadow.
– **Transparency**: Gets or sets the transparency of the shadow (from 0.0 for opaque to 1.0 for fully transparent).
– **OffsetX**: Gets or sets the horizontal offset of the shadow in points. Positive values shift the shadow to the right, while negative values shift it to the left.
– **OffsetY**: Gets or sets the vertical offset of the shadow in points. Positive values shift the shadow downward, while negative values shift it upward.
sht.api.Range(‘A1:B7’).Select()
cht=sht.api.Shapes.AddChart().Chart
cha=cht.ChartArea #Chart Area
cha.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((155,255,0))
cha.Shadow=True #Plot area shows shadow
pla=cht.PlotArea #Plot area
pla.Format.Fill.UserPicture(root+r’/picpy2.jpg’) #Picture fill
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
cht.Axes(2).HasMajorGridlines=False
cha.Shadow=False
pla.Format.Shadow.Visible=True #Plot area shows shadow
pla.Format.Shadow.OffsetX=3 #Horizontal offset of the shadow
pla.Format.Shadow.OffsetY=3 #Vertical offset of the shadow
【Example】

【Code】
import xlwings as xw
import os
def set_style(cht):
cht.ChartArea.Format.Line.Visible=False
cht.PlotArea.Format.Fill.Visible=True
cht.PlotArea.Format.Line.Visible=True
cht.PlotArea.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((200,200,200))
#cht.PlotArea.Format.Line.ForeColor.ObjectThemeColor = msoThemeColorText1
ax1=cht.Axes(1)
ax2=cht.Axes(2)
ax1.HasTitle=True
ax1.AxisTitle.Text='Categories'
ax1.AxisTitle.Font.Size=10
ax1.TickLabels.Font.Size=8
#ax1.TickLabels.NumberFormat='0.00'
ax1.HasMajorGridlines=False
ax2.HasTitle=True
ax2.AxisTitle.Text='Values'
ax2.AxisTitle.Font.Size=10
ax2.TickLabels.Font.Size=8
ax2.HasMajorGridlines=False
cht.HasTitle=True
#cht.ChartTitle.Caption='Plot'
#cht.ChartTitle.Font.Size=12
root=os.getcwd()
app=xw.App(visible=True,add_book=False)
wb=app.books.open(root+r'/data.xlsx',read_only=False)
sht=wb.sheets('Sheet1')
sht.api.Range('A1:B7').Select() #
cht=sht.api.Shapes.AddChart2(-1, \
xw.constants.ChartType.xlColumnClustered,20,20,350,250,True).Chart
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
cht.PlotArea.Format.Fill.UserPicture('d:/picpy2.jpg')
set_style(cht)
cht.Export(root+'/cht.jpg')
cht.Export(root+'/cht.svg')
cht.ExportAsFixedFormat(0,root+'/cht.pdf')
#wb.save()
#app.kill()

How to use Application.FindFile in the xlwings API way
The FindFile method of the Application object in Excel is a powerful tool for programmatically opening the “Open” dialog box, allowing users to search for and select a file to open within the Excel application interface. This method mimics the action of clicking “File” > “Open” in the Excel ribbon, providing a user-interactive way to locate files without hardcoding file paths in your scripts. In xlwings, which provides a clean Pythonic interface to automate Excel, you can access this Excel method through the api property of the main App or Book objects, giving you direct access to the underlying Excel object model.
Functionality:
The primary function of FindFile is to display the standard Open dialog box. It returns a Boolean value: True if a file is successfully opened, and False if the dialog is canceled by the user. This method is particularly useful in scenarios where the script needs to prompt the user to select a file dynamically, such as in data import routines or when working with files that may change location.
Syntax in xlwings:
In xlwings, you call this method via the api property of an Application object. The typical syntax is:
result = xw.apps[0].api.FindFile()
Or, if you have a specific app instance:
app = xw.App()
result = app.api.FindFile()
The method does not take any parameters. The return value result is a Boolean indicating success (True) or cancellation (False).
Parameters:FindFile has no parameters in Excel VBA, and this is directly mirrored in xlwings. The method relies entirely on user interaction within the displayed dialog.
Example Usage:
Here is a practical example using xlwings to open the Open dialog and handle the user’s selection:
import xlwings as xw
# Start or connect to Excel
app = xw.App(visible=True) # Ensure Excel is visible to see the dialog
# Display the Open dialog
file_opened = app.api.FindFile()
# Check the result
if file_opened:
print("A file was successfully opened by the user.")
# You can now interact with the opened workbook, e.g., get its name
active_book = app.books.active
print(f"Opened workbook: {active_book.name}")
else:
print("The Open dialog was canceled by the user.")
# Keep the app open or close as needed
# app.quit()
How To Set Plot Area Using xlwings?
【Method】
The chart area is the rectangular area that contains the entire chart, while the plot area is the rectangular area defined by the two axes. In Excel, the chart area is represented by the `ChartArea` object, and the plot area is represented by the `PlotArea` object. You can access these areas using the `ChartArea` and `PlotArea` properties of the `Chart` object.
By continuously referencing the `ChartArea` and `PlotArea` objects’ `Format.Fill` property, you can set the fill properties of both areas, such as their color, transparency, gradient fills, pattern fills, picture fills, texture fills, etc.
Using the `Format.Shadow` property of the `ChartArea` and `PlotArea` objects, you can set additional shadow properties for these areas. The `Format.Shadow` property returns a `ShadowFormat` object with the following main properties:
– **Visible**: Determines whether the shadow is visible.
– **Blur**: Gets or sets the blur radius of the shadow.
– **Transparency**: Gets or sets the transparency of the shadow (from 0.0 for opaque to 1.0 for fully transparent).
– **OffsetX**: Gets or sets the horizontal offset of the shadow in points. Positive values shift the shadow to the right, while negative values shift it to the left.
– **OffsetY**: Gets or sets the vertical offset of the shadow in points. Positive values shift the shadow downward, while negative values shift it upward.
sht.api.Range(‘A1:B7’).Select()
cht=sht.api.Shapes.AddChart().Chart
cha=cht.ChartArea #Chart Area
cha.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((155,255,0))
cha.Shadow=True #Plot area shows shadow
pla=cht.PlotArea #Plot area
pla.Format.Fill.UserPicture(root+r’/picpy2.jpg’) #Picture fill
cht.SeriesCollection(1).Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,0))
cht.Axes(2).HasMajorGridlines=False
cha.Shadow=False
pla.Format.Shadow.Visible=True #Plot area shows shadow
pla.Format.Shadow.OffsetX=3 #Horizontal offset of the shadow
pla.Format.Shadow.OffsetY=3 #Vertical offset of the shadow
【Example】

import xlwings as xw
import os
def set_style(cht):
cht.ChartArea.Format.Line.Visible=False
cht.PlotArea.Format.Fill.Visible=True
cht.PlotArea.Format.Line.Visible=True
cht.PlotArea.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((200,200,200))
#cht.PlotArea.Format.Line.ForeColor.ObjectThemeColor=msoThemeColorText1
ax1=cht.Axes(1)
ax2=cht.Axes(2)
ax1.HasTitle=True
ax1.AxisTitle.Text='Categories'
ax1.AxisTitle.Font.Size=10
ax1.TickLabels.Font.Size=8
#ax1.TickLabels.NumberFormat='0.00'
ax1.HasMajorGridlines=False
ax2.HasTitle=True
ax2.AxisTitle.Text='Values'
ax2.AxisTitle.Font.Size=10
ax2.TickLabels.Font.Size=8
ax2.HasMajorGridlines=False
cht.HasTitle=True
#cht.ChartTitle.Caption='Plot'
#cht.ChartTitle.Font.Size=12
root=os.getcwd()
app=xw.App(visible=True, add_book=False)
wb=app.books.open(root+r'/data.xlsx',read_only=False)
sht=wb.sheets('Sheet1')
sht.api.Range('A1:B7').Select() #
cht=sht.api.Shapes.AddChart2(-1, \
xw.constants.ChartType.xlColumnClustered,20,20,350,250,True).Chart
cht.PlotArea.Format.Fill.ForeColor.RGB=xw.utils.rgb_to_int((255,255,26))
cht.PlotArea.Format.Fill.OneColorGradient(1,1,1) #msoGradientHorizontal
set_style(cht)
cht.Export(root+'/cht.jpg')
cht.Export(root+'/cht.svg')
cht.ExportAsFixedFormat(0,root+'/cht.pdf')
#wb.save()
#app.kill()

How to use Application.ExecuteExcel4Macro in the xlwings API way
The ExecuteExcel4Macro member of the Application object in Excel’s object model provides a way to run Excel 4.0 macro functions, which are legacy commands from older versions of Excel. While modern Excel primarily uses VBA, these functions can still be useful for specific tasks that are not directly supported by newer APIs, such as certain financial or engineering calculations. In xlwings, this functionality is accessed through the api property, which exposes the underlying Excel object model, allowing Python scripts to interact with Excel in a manner similar to VBA.
The syntax for calling ExecuteExcel4Macro via xlwings is straightforward. First, you need to obtain the Application object from an xlwings App or Book instance. Then, you can invoke the method. The method takes a single string argument, String, which represents the Excel 4.0 macro function you want to execute. This string should be formatted exactly as it would be in Excel 4.0, including any required arguments. For example, a common function is GET.CELL, which retrieves information about a cell. The parameter is provided as a plain string, and you must ensure it is correctly quoted and concatenated if variables are involved. There is no return value specification in the syntax itself; the output depends on the macro function called.
Here is a basic example that demonstrates how to use ExecuteExcel4Macro with xlwings to get the full path of the active workbook, using the Excel 4.0 function GET.DOCUMENT(1):
import xlwings as xw
# Connect to the active Excel instance
app = xw.apps.active
# Execute the Excel 4.0 macro function to get the full path
full_path = app.api.ExecuteExcel4Macro("GET.DOCUMENT(1)")
print(f"Full path of active workbook: {full_path}")
Another example involves retrieving a specific cell’s value using GET.CELL. This can be useful for getting properties like the cell’s format or formula. In this case, you need to construct a reference string:
import xlwings as xw
# Connect to the active workbook and sheet
wb = xw.books.active
sheet = wb.sheets.active
# Define the cell address, e.g., A1
cell_address = "A1"
# Execute GET.CELL(6, A1) to get the formula in the cell (6 is the type_num for formula)
# Note: The reference must be provided as an R1C1-style reference or a named range
formula_result = wb.app.api.ExecuteExcel4Macro(f'GET.CELL(6, {cell_address})')
print(f"Formula in {cell_address}: {formula_result}")
How To Set Chart Title Using xlwings?
【Example】

【Code】
import xlwings as xw
import os
def set_style(cht):
cht.ChartArea.Format.Line.Visible=False
cht.PlotArea.Format.Fill.Visible=False
cht.PlotArea.Format.Line.Visible=True
cht.PlotArea.Format.Line.ForeColor.RGB=xw.utils.rgb_to_int((200,200,200))
#cht.PlotArea.Format.Line.ForeColor.ObjectThemeColor=msoThemeColorText1
ax1=cht.Axes(1)
ax2=cht.Axes(2)
ax1.HasTitle=True
ax1.AxisTitle.Text='Categories'
ax1.AxisTitle.Font.Size=10
ax1.TickLabels.Font.Size=8
#ax1.TickLabels.NumberFormat='0.00'
ax1.HasMajorGridlines=False
ax2.HasTitle=True
ax2.AxisTitle.Text='Values'
ax2.AxisTitle.Font.Size=10
ax2.TickLabels.Font.Size=8
ax2.HasMajorGridlines=False
cht.HasTitle=True
#cht.ChartTitle.Caption='Plot'
#cht.ChartTitle.Font.Size=12
root=os.getcwd()
app=xw.App(visible=True,add_book=False)
wb=app.books.open(root+r'/data.xlsx',read_only=False)
sht=wb.sheets('Sheet1')
sht.api.Range('A1:B7').Select() #
cht=sht.api.Shapes.AddChart2(-1,\
xw.constants.ChartType.xlColumnClustered,20,20,350,250,True).Chart
cht.HasTitle=True
cht.ChartTitle.Caption='Chart Title'
cht.ChartTitle.Characters.Font.Name='Times New Roman'
cht.ChartTitle.Characters.Font.Size=16
cht.ChartTitle.Characters.Font.Bold=True
cht.ChartTitle.Characters.Font.Color=xw.utils.rgb_to_int((255,0,0))
set_style(cht)
cht.Export(root+'/cht.jpg')
cht.Export(root+'/cht.svg')
cht.ExportAsFixedFormat(0,root+'/cht.pdf')
#wb.save()
#app.kill()

How to use Application.Evaluate in the xlwings API way
The Application.Evaluate method in Excel is a powerful tool for converting a Microsoft Excel name or a formula string into an actual value or a reference object. In xlwings, this functionality is exposed through the api property of an App or Book object, allowing you to leverage Excel’s calculation engine directly from Python. This is particularly useful for evaluating complex formulas that are easier to express in Excel’s native syntax than to replicate in Python code, or for retrieving the value of a defined name.
The syntax in xlwings follows the pattern of accessing the underlying Excel object model. To call Evaluate, you first obtain the Excel Application object via the api property. The method takes a single string argument, which is the name or formula to be evaluated.
Syntax:
app.api.Evaluate(Name)
app: This is your xlwingsAppobject (e.g.,xlwings.App()orxw.apps.active)..api: This property provides direct access to the pywin32 or appscript COM object, enabling calls to the raw Excel VBA object model..Evaluate: The method being called.Name(String, Required): A formula, a defined name, or a reference (as a string) that you want Excel to evaluate. This must be provided in the locale of the Excel application or in A1-style notation. For example,"SUM(A1:B10)","MyNamedRange", or"Sheet1!$C$5".
The method returns the result of the evaluated formula. This can be a simple data type (like a number, string, or boolean), an xlwings.Range object (if the name evaluates to a range reference), or an error.
Code Examples:
- Evaluating a Mathematical Formula:
This calculates a formula string and returns the numeric result.
import xlwings as xw
app = xw.App(visible=False)
wb = app.books.add()
# Place values in cells
wb.sheets[0].range('A1').value = 10
wb.sheets[0].range('A2').value = 20
# Use Evaluate to compute the sum
result = app.api.Evaluate("SUM(A1:A2)")
print(result) # Output: 30.0
wb.close()
app.quit()
- Evaluating a Defined Name:
This retrieves the value or reference associated with a name defined in the workbook.
import xlwings as xw
app = xw.App(visible=False)
wb = app.books.add()
# Define a name for a range
wb.api.Names.Add(Name="MyData", RefersTo="=Sheet1!$A$1:$A$5")
# Put values into the named range
wb.sheets['Sheet1'].range('A1:A5').value = [[1], [2], [3], [4], [5]]
# Evaluate the defined name to get its value (the array)
name_result = app.api.Evaluate("MyData")
print(list(name_result)) # Output: [1.0, 2.0, 3.0, 4.0, 5.0]
wb.close()
app.quit()
- Evaluating a Formula that Returns a Range Object:
This is useful for obtaining an xlwings Range object from a string reference.
import xlwings as xw
app = xw.App(visible=True)
wb = app.books.add()
ws = wb.sheets[0]
ws.range('B2').value = "Hello World"
# Evaluate returns a Range COM object, which xlwings wraps.
# The xlwings Range constructor can handle this COM object.
range_ref = app.api.Evaluate("Sheet1!B2")
xl_range = xw.Range(range_ref) # Wrap it in xlwings Range
print(xl_range.value) # Output: Hello World
print(xl_range.address) # Output: $B$2
# wb.close() and app.quit() omitted for an interactive example.
How To Use SetElement Method Using xlwings?
【Method】
The `SetElement` method of the `Chart` object allows you to set chart elements for the specified chart. The method has one parameter that provides options for setting. The possible values of the parameter are shown in the table below.
|
Name |
Value |
Description |
|
msoElementChartFloorNone |
1200 |
Do not display chart floor |
|
msoElementChartFloorShow |
1201 |
Display chart floor |
|
msoElementChartTitleAboveChart |
2 |
Display title above the chart |
|
msoElementChartTitleCenteredOverlay |
1 |
Display title centered as overlay |
|
msoElementChartTitleNone |
0 |
Do not display chart title |
|
msoElementChartWallNone |
1100 |
Do not display chart background wall |
|
msoElementChartWallShow |
1101 |
Display chart background wall |
|
msoElementDataLabelBestFit |
210 |
Use best fit data labels |
|
msoElementDataLabelBottom |
209 |
Display data labels at the bottom |
|
msoElementDataLabelCallout |
211 |
Display data labels as callouts |
|
msoElementDataLabelCenter |
202 |
Centered data labels |
|
msoElementDataLabelInsideBase |
204 |
Display data labels inside the base |
|
msoElementDataLabelInsideEnd |
203 |
Display data labels inside the end |
|
msoElementDataLabelLeft |
206 |
Display data labels on the left |
|
msoElementDataLabelNone |
200 |
Do not display data labels |
|
msoElementDataLabelOutSideEnd |
205 |
Display data labels outside the end |
|
msoElementDataLabelRight |
207 |
Display data labels on the right |
|
msoElementDataLabelShow |
201 |
Display data labels |
|
msoElementDataLabelTop |
208 |
Display data labels at the top |
|
msoElementDataTableNone |
500 |
Do not display data table |
|
msoElementDataTableShow |
501 |
Display data table |
|
msoElementDataTableWithLegendKeys |
502 |
Display data table with legend keys |
|
msoElementErrorBarNone |
700 |
Do not display error bars |
|
msoElementErrorBarPercentage |
702 |
Display percentage error bars |
|
msoElementErrorBarStandardDeviation |
703 |
Display standard deviation error bars |
|
msoElementErrorBarStandardError |
701 |
Display standard error error bars |
|
msoElementLegendBottom |
104 |
Display legend at the bottom |
|
msoElementLegendLeft |
103 |
Display legend on the left |
|
msoElementLegendLeftOverlay |
106 |
Overlay legend on the left |
|
msoElementLegendNone |
100 |
Do not display legend |
|
msoElementLegendRight |
101 |
Display legend on the right |
|
msoElementLegendRightOverlay |
105 |
Overlay legend on the right |
|
msoElementLegendTop |
102 |
Display legend at the top |
|
msoElementLineDropHiLoLine |
804 |
Display drop line and high/low lines |
|
msoElementLineDropLine |
801 |
Display drop line |
|
msoElementLineHiLoLine |
802 |
Display high/low line |
|
msoElementLineNone |
800 |
Do not display lines |
|
msoElementLineSeriesLine |
803 |
Display series lines |
|
msoElementPlotAreaNone |
1000 |
Do not display plot area |
|
msoElementPlotAreaShow |
1001 |
Display plot area |