NumPy 是 Python 中最流行的库之一。它支持数据科学、机器学习和数值分析。许多开发者使用 NumPy 数组 (ndarray) 来快速处理大型数据集。
在我们的 previous blog post 中,我们解释了如何将 Excel 文件转换为 NumPy 数组。当您需要将外部数据导入 Python 进行分析时,这个工作流程是很有用的。但是如果您想要做相反的事情呢?很多时候,您需要将来自 NumPy 的 Python 结果导出到 Excel 进行报告和共享。Excel 在企业、学校和组织中被广泛使用,使其成为理想的协作格式。
在本指南中,我们将逐步向您展示如何使用 Python 和 Aspose.Cells for Python via .NET 将 NumPy 转换为 Excel。
为什么将 NumPy 转换为 Excel?
NumPy 在 Python 中进行计算和分析是完美的。但我们常常需要与他人分享结果。大多数商业用户更喜欢 Excel,因为它熟悉且易于使用。
以下是您可能需要将 NumPy 导出到 Excel 的一些常见原因:
- 数据报告:将处理后的数据转换为管理者或客户的 Excel 文件。
- 协作:与不使用 Python 的队友分享结果。
- 商业分析:将 NumPy 结果与现有的 Excel 报告和仪表板结合。
- 可视化:使用 Excel 图表和数据透视表使数据更具意义。
Excel 是一种通用格式。它弥合了 Python 开发人员和非技术用户之间的差距。通过将 NumPy 数组导出到 Excel,您使您的数据可访问、可用且易于理解。
Python NumPy Excel 库
Aspose.Cells for Python 是一个强大的电子表格库。它允许您创建、编辑和处理 Excel 文件,而无需安装 Microsoft Excel。它是 最佳 Excel 库 for Python,专为需要对 Excel 文档进行全面控制的开发人员设计。您可以:
- 加载和保存不同格式的 Excel 文件。
- 处理工作表、表格、范围和图表。
- 从 Python 对象导入和导出数据,包括 NumPy 数组。
- 处理大型数据集,同时确保高速度和高准确性。
最佳的部分是 Aspose.Cells 可以独立工作。您不需要 Excel 或任何外部软件。它在您的 Python 应用程序中顺利运行,并与科学工作流程很好地集成。这使它成为将 NumPy 数据转换为 Excel 文件的可靠解决方案。
将 NumPy 转换为 Excel 在 Python 中
将 NumPy 数组转换为 Excel 使用 Aspose.Cells 非常简单。请按照以下快速步骤进行操作:
步骤 1:通过 .NET 安装 Aspose.Cells for Python
使用 pip 安装该软件包:
pip install aspose-cells-python
步骤 2:导入所需库
在你的 Python 脚本中,导入 NumPy 和 Aspose.Cells:
import numpy as np
import aspose.cells as cells
步骤 3:创建一个示例 NumPy 数组
为了测试,创建一个简单的 2D 数组:
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
步骤 4:定义一个自定义函数 – insertnumpyarray
NumPy 值通常以 numpy.int64、numpy.float32 或 numpy.bool 等类型出现。这些在写入 Excel 单元格之前需要转换为原生 Python 类型。
下面的辅助函数执行此转换,并从给定的行和列直接将数组插入到工作表中:
# 自定义函数将 NumPy 数组插入工作表
def insert_numpy_array(sheet, ndarray, start_row=0, start_col=0):
rows, cols = ndarray.shape
for r in range(rows):
for c in range(cols):
value = ndarray[r, c]
# 将 NumPy 类型转换为原生 Python 类型
if isinstance(value, (np.integer,)):
value = int(value)
elif isinstance(value, (np.floating,)):
value = float(value)
elif isinstance(value, (np.bool_,)):
value = bool(value)
elif isinstance(value, (np.str_, np.str_)):
value = str(value)
sheet.cells.get(start_row + r, start_col + c).put_value(value)
在接下来的部分中,我们将演示如何将 NumPy 数据插入 Workbook、Worksheet、ListObject、Range 和 Named Range。接下来的部分中的代码示例使用了在第 4 步:自定义函数部分中定义的辅助函数。
如何将 NumPy ndarray 转换为 Excel 工作簿
您可以仅用几行代码从 NumPy 数组创建一个完整的 Excel 工作簿。该方法非常适合当您想要将数据分析结果、机器学习输出或表格数据集导出到可以共享或进一步处理的专业 Excel 文件中时。
请按照以下步骤将 NumPy ndarray 转换为 Excel 工作簿:
- 创建一个包含您的数据的 NumPy 2D 数组。
- 使用
Workbook类初始化一个新的空工作簿。 - 使用
worksheets.add()方法向工作簿添加新工作表。 - 通过它的索引访问新工作表。
- 遍历 NumPy 数组并将值插入工作表单元格中。
- 将工作簿保存为 Excel 文件。
以下代码示例展示了如何将一个 NumPy ndarray 转换为 Excel 工作簿。
# 创建一个 NumPy 数组
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 将 NumPy 数组转换为 Excel 工作簿
workbook = cells.Workbook()
# 添加一个新工作表
new_sheet_index = workbook.worksheets.add()
worksheet = workbook.worksheets.get(new_sheet_index)
# 将数组插入到从单元格 A1 开始的新工作表中
insert_numpy_array(worksheet, data)
# 将工作簿另存为 Excel 文件
workbook.save("numpy_to_workbook.xlsx")

如何将 NumPy 转换为 Excel 工作簿
将 NumPy ndarray 插入工作表
有时您已经有一个工作簿,您只想将 NumPy 数据插入一个工作表中。
请按照以下步骤将 NumPy ndarray 转换为工作表:
- 创建一个包含您的数据的 NumPy 2D 数组。
- 加载现有的 Excel 文件,使用
Workbook类。 - 选择您想放置数据的工作表。
- 遍历 NumPy 数组,并将值插入到工作表单元格中。
- 将工作簿保存为 Excel 文件。
以下代码示例演示了如何将 NumPy ndarray 插入到 Excel 工作簿的特定工作表中:
# 创建一个 NumPy 数组
data = np.array([['City', 'Region', 'Store'], ['Chicago', 'Central', 3055], ['New York', 'East', 3036],
['Detroit', 'Central', 3074]])
# 将 NumPy 数组转换为 Excel 工作簿
workbook = cells.Workbook("numpy_to_workbook.xlsx")
# 访问第一个工作表
sheet = workbook.worksheets.get(0)
# 将 NumPy 数组插入工作表,从 A1 开始
insert_numpy_array(sheet, data, 0, 0)
# 将工作簿保存为 Excel 文件
workbook.save("numpy_to_worksheet.xlsx")

如何将 NumPy ndarray 转换为工作表
如何将 NumPy ndarray 转换为 ListObject(Excel 表)
Excel 表(也称为 ListObjects)是组织和分析数据的强大方式。使用 Aspose.Cells,您可以直接将 NumPy 数组导入 ListObject。
请按照以下步骤将 NumPy ndarray 转换为 ListObject(Excel 表):
- 创建一个带有示例数据的 NumPy 2D 数组。
- 初始化一个新的工作簿并访问第一个工作表。
- 将 NumPy 数据插入工作表单元格,使用辅助函数。
- 根据数组维度定义起始和结束行列。
- 将
ListObject添加到工作表,使用worksheet.listobjects.add()。 - 为
ListObject指定一个显示名称。 - 将工作簿另存为 Excel 文件。
以下代码示例演示了如何将 NumPy ndarray 转换为 Excel 表:
# 创建一个 NumPy 数组
data = np.array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
# 创建一个新的 Excel 工作簿
workbook = cells.Workbook()
worksheet = workbook.worksheets.get(0)
# 将 NumPy 数组插入工作表,从单元格 A1 开始
insert_numpy_array(worksheet, data)
# 定义 ListObject 的范围
start_row, start_col = 0, 0
end_row, end_col = data.shape[0] - 1, data.shape[1] - 1
# 从 NumPy 数据添加 ListObject(Excel 表)
index = worksheet.list_objects.add(start_row, start_col, end_row, end_col, True)
list_object = worksheet.list_objects[index]
# 为表格设置显示名称
list_object.display_name = "NumPyTable"
# 保存工作簿
workbook.save("numpy_to_listobject.xlsx")

如何将 NumPy ndarray 转换为 ListObject(Excel 表)
将 NumPy ndarray 转换为 Range
有时您可能想将 NumPy 数组放置到特定的单元格范围内。当您需要在工作表中精确放置数据时,此方法是理想的,例如填充预定义的表格区域或将分析结果导出到选定的单元格块中。
按照以下步骤将 NumPy ndarray 转换为 Range:
- 创建一个 2D NumPy ndarray。
- 创建一个新工作簿或打开一个现有的工作簿。
- 选择目标工作表。
- 遍历 ndarray 值并插入到相应的 Excel 单元格中。
- 创建一个
Range对象,使用cells.createrange(startcell, endcell)。 - 将填写范围的工作表导出为 Excel 文件。
以下代码示例展示了如何将 NumPy ndarray 插入到 Excel 范围中:
import numpy as np
from datetime import datetime
from aspose.cells import Workbook, CellsHelper
# 安全地将 NumPy 值放入单元格的助手
def put_cell_value(cells, raw_value, row, col):
cell = cells.get(row, col)
if isinstance(raw_value, (np.bool_,)):
value = bool(raw_value)
elif isinstance(raw_value, (np.integer,)):
value = int(raw_value)
elif isinstance(raw_value, (np.floating,)):
value = float(raw_value)
elif isinstance(raw_value, (np.datetime64,)):
# 将 numpy datetime64 转换为 Python datetime 再转换为 Excel 兼容字符串
value = str(np.datetime_as_string(raw_value, unit='D'))
else:
value = raw_value
cell.put_value(value)
# 将 NumPy 数组插入单元格并返回范围的函数
def numpy_to_range(cells, data, start_row=0, start_col=0):
rows, cols = data.shape
for i in range(rows):
for j in range(cols):
put_cell_value(cells, data[i, j], start_row + i, start_col + j)
# 根据起始/结束单元格定义范围
start_cell = CellsHelper.cell_index_to_name(start_row, start_col)
end_cell = CellsHelper.cell_index_to_name(start_row + rows - 1, start_col + cols - 1)
return cells.create_range(start_cell, end_cell)
# 创建一个示例 NumPy 数组
data = np.array([
['City', 'Region', 'Store', 'Date'],
['Chicago', 'Central', 3055, np.datetime64('2025-01-15')],
['New York', 'East', 3036, np.datetime64('2025-02-10')],
['Detroit', 'Central', 3074, np.datetime64('2025-03-05')]
])
# 创建一个新工作簿并获取第一个工作表
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
cells = worksheet.cells
# 将 ndarray 插入到工作表中作为范围
range_obj = numpy_to_range(cells, data, 0, 0)
print("Row count:", range_obj.row_count)
print("Column count:", range_obj.column_count)
# 保存工作簿
workbook.save("numpy_to_range.xlsx")

如何将 NumPy ndarray 转换为 Range
如何将 NumPy ndarray 转换为名称(命名范围)
有时候您可能想要为Excel中的特定数据范围分配一个有意义的名称。这使得在公式、图表或其他工作表中引用数据变得更加容易。在本节中,我们将向您展示如何使用Python和Aspose.Cells将NumPy转换为Excel命名范围。通过创建命名范围,您可以在Excel中更有效地处理您的NumPy数据。
按照以下步骤使用 Aspose.Cells 将 NumPy ndarray 转换为 Excel 中的命名范围
- 创建一个 NumPy 数组在 Python 中。
- 创建一个新的工作簿并访问目标工作表。
- 循环遍历数组,将每个值插入工作表。
- 定义一个覆盖导入数据的范围。
- 为该范围指定一个名称。
- 将工作簿保存为 Excel 文件。
以下代码示例演示如何将 NumPy ndarray 插入 Excel 中的命名范围:
import numpy as np
import aspose.cells
from aspose.cells import Workbook, CellsHelper
# 辅助函数将 NumPy 数据插入工作表单元格中
def put_cell_value(cells, raw_value, row, column):
if isinstance(raw_value, (np.bool_)):
value = bool(raw_value)
elif isinstance(raw_value, (np.integer)):
value = int(raw_value)
elif isinstance(raw_value, (np.floating)):
value = float(raw_value)
elif isinstance(raw_value, (np.datetime64)):
value = str(np.datetime_as_string(raw_value, unit='D'))
else:
value = str(raw_value)
cells.get(row, column).put_value(value)
def insert_ndarray_into_cells(cells, data, start_row, start_col):
row_count = data.shape[0]
col_count = data.shape[1]
for r in range(row_count):
for c in range(col_count):
put_cell_value(cells, data[r][c], start_row + r, start_col + c)
# 返回覆盖的单元格区域
end_row = start_row + row_count - 1
end_col = start_col + col_count - 1
return (start_row, start_col, end_row, end_col)
# ---------------------------
# 主代码
# ---------------------------
# 创建一个示例 NumPy 数组
data = np.array([
['Product', 'Region', 'Sales'],
['Laptop', 'East', 1200],
['Phone', 'West', 950],
['Tablet', 'North', 740]
])
# 创建一个新的工作簿
workbook = Workbook()
worksheet = workbook.worksheets.get(0)
cells = worksheet.cells
# 将 ndarray 插入到从 (0,0) 开始的单元格中
(start_row, start_col, end_row, end_col) = insert_ndarray_into_cells(cells, data, 0, 0)
# 获取 Excel 单元格引用
start_cell = CellsHelper.cell_index_to_name(start_row, start_col)
end_cell = CellsHelper.cell_index_to_name(end_row, end_col)
# 为这个 ndarray 创建一个命名范围
idx = workbook.worksheets.names.add("SalesData") # returns index
named_range = workbook.worksheets.names[idx] # get the Name object
named_range.refers_to = f"={worksheet.name}!{start_cell}:{end_cell}"
# 保存工作簿
workbook.save("numpy_to_named_range.xlsx")

如何将 NumPy ndarray 转换为名称(命名范围)
开始使用 Aspose.Cells for Python
您现在已经看到使用 Aspose.Cells 将 NumPy 数组转换为 Excel 是多么简单。该库为您提供了对工作簿、工作表、表格、范围和命名范围的完全控制权。
这里有一些有用的链接,可以增强您的理解:
获取一个 免费临时许可证,今天就开始使用 Aspose.Cells,使您的 Python 数据与 Excel 工作流完全兼容。
NumPy to Excel: 常见问题解答
Q1: 我需要安装 Microsoft Excel 才能使用 Aspose.Cells 吗?
不。Aspose.Cells 独立工作。您不需要安装 Excel 或任何其他软件。
Q2: Aspose.Cells 能处理大型 NumPy 数组吗?
是的。这个库经过优化,适用于大型数据集,即使面对大数组时也能表现良好。
Q3: 支持哪些 Excel 格式?
您可以将您的 NumPy 数据保存为 XLSX、XLS、CSV、ODS 和许多其他电子表格格式。
Q4: 我可以在导出 NumPy 数据后格式化 Excel 单元格吗?
是的。您可以应用样式、数字格式、公式,甚至创建图表或透视表。
Q5: 是否有 Aspose.Cells 的免费版本?
是的。您可以下载一个 免费试用 或申请一个 临时许可证 进行测试。
结论
NumPy 是 Python 中数据科学和数值分析的核心工具,但现实世界的报告通常需要 Excel。通过 Aspose.Cells for .NET for Python,将 NumPy 转换为 Excel 变得无缝而灵活。在本指南中,我们探讨了不同的方法:将 NumPy 数组导出到完整的工作簿、将数据插入工作表、格式化为 ListObject(Excel 表)、将数组映射到一个范围以及将它们分配给命名范围。每种方法都有其独特的目的。通过将 NumPy 的强大功能与 Aspose.Cells 的灵活性结合起来,您可以高效地从基于 Python 的分析转向专业的 Excel 报告,确保您的数据既可访问又准备好呈现。
如果您有任何问题,请随时在我们的 free support forum 提出,我们将很乐意提供帮助。
