NumPy 是 Python 中最受歡迎的庫之一。它支持數據科學、機器學習和數值分析。許多開發者使用 NumPy 陣列 (ndarray) 來快速處理大型數據集。
在我們的 之前的部落格文章 中,我們解釋了如何將 Excel 文件轉換為 NumPy 陣列。當你需要將外部數據帶入 Python 進行分析時,這個工作流程是非常有用的。但是如果你想反過來呢?許多時候,你需要將 Python 結果從 NumPy 匯出到 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。它是最佳的 Python Excel 庫,旨在為需要對 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 數據插入到工作簿、工作表、列表物件、範圍和命名範圍中。接下來部分的代碼範例使用了在第 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 陣列。
- 使用
Workbook類別加載現有的 Excel 文件。 - 選擇您想放置數據的工作表。
- 遍歷 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 中的命名範圍。
- 在Python中創建NumPy數組。
- 創建一個新的工作簿並訪問目標工作表。
- 遍歷陣列並將每個值插入工作表中。
- 定義一個覆蓋匯入數據的範圍。
- 為該範圍指定一個名稱。
- 將工作簿另存為 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)
# ---------------------------
# Main Code
# ---------------------------
# 創建一個範例 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 是多麼簡單。該庫讓您對工作簿、工作表、表格、範圍和命名範圍擁有完全的控制權。
這裡有一些有用的鏈接可以增強你的理解:
獲取一個 free temporary license 並立即開始使用 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 Python via .NET,將 NumPy 轉換為 Excel 變得無縫且靈活。在本指南中,我們探索了不同的方法:將 NumPy 陣列匯出到完整的工作簿、將數據插入工作表、格式化為 ListObject(Excel 表格)、將陣列映射到範圍,並分配給命名範圍。每種方法都有其獨特的用途。通過將 NumPy 的強大功能與 Aspose.Cells 的靈活性相結合,您可以高效地從基於 Python 的分析轉移到專業的 Excel 報告,確保您的數據既可訪問又適合展示。
如果您有任何問題,請隨時在我們的 free support forum 提問,我們將樂意協助您。
