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.int64numpy.float32numpy.bool 的類型出現。在將它們寫入 Excel 單元格之前,需要將這些值轉換為本地 Python 類型。

下面的幫助函數執行此轉換,並將數組直接插入從給定行和列開始的工作表中:

在接下來的幾個部分中,我們將示範如何將 NumPy 數據插入到工作簿、工作表、列表物件、範圍和命名範圍中。接下來部分的代碼範例使用了在第 4 步:自定義函數部分中定義的輔助函數。

如何將 NumPy ndarray 轉換為 Excel 工作簿

您可以僅用幾行代碼從 NumPy 陣列創建完整的 Excel 工作簿。這種方法非常適合在您希望將數據分析結果、機器學習輸出或表格數據集導出到專業的 Excel 文件中,以便分享或進一步處理時使用。

請按照以下步驟將 NumPy ndarray 轉換為 Excel 工作簿:

  1. 建立一個包含您數據的 NumPy 2D 陣列。
  2. 使用 Workbook 類別初始化一個新的空工作簿。
  3. 使用 worksheets.add() 方法將新的工作表添加到工作簿中。
  4. 通過索引訪問新工作表。
  5. 循環遍歷 NumPy 陣列並將值插入工作表單元格中。
  6. 將工作簿另存為 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 轉換為 Excel 工作簿

將 NumPy ndarray 插入工作表

有時候您已經有一個工作簿,而您只想將 NumPy 數據插入一個工作表中。

按照以下步驟將 NumPy ndarray 轉換為工作表:

  1. 建立一個包含您數據的 NumPy 2D 陣列。
  2. 使用 Workbook 類別加載現有的 Excel 文件。
  3. 選擇您想放置數據的工作表。
  4. 遍歷 NumPy 陣列並將值插入工作表單元格。
  5. 將工作簿儲存為 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 轉換為工作表

如何將 NumPy ndarray 轉換為 ListObject(Excel 表格)

Excel 表格(也稱為 ListObjects)是一種強大的組織和分析數據的方法。使用 Aspose.Cells,您可以將 NumPy 陣列直接導入到 ListObject 中。

請按照以下步驟將 NumPy ndarray 轉換為 ListObject(Excel 表格):

  1. 創建一個包含示例數據的 NumPy 2D 陣列。
  2. 初始化一個新的工作簿並訪問第一個工作表。
  3. 使用輔助函數將 NumPy 數據插入工作表單元格中。
  4. 根據數組維度定義起始和結束行和列。
  5. ListObject 添加到工作表中,使用 worksheet.listobjects.add()
  6. ListObject 指派顯示名稱。
  7. 將工作簿另存為 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 轉換為 ListObject(Excel 表格)

將 NumPy ndarray 轉換為 Range

有時候,您可能想將一個 NumPy 陣列放置到特定的儲存格範圍內。這種方法非常適合當您需要精確地將數據放入工作表中,例如填充預定義的表格區域或將分析結果導出到選定的儲存格區塊。

按照以下步驟將 NumPy ndarray 轉換為 Range:

  1. 創建一個 2D NumPy ndarray。
  2. 創建一個新的工作簿或打開現有的工作簿。
  3. 選擇目標工作表。
  4. 遍歷 ndarray 值並插入到相應的 Excel 單元格中。
  5. 建立一個 Range 物件,使用 cells.createrange(startcell, endcell)
  6. 將填寫的範圍的工作表導出到 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 轉換為範圍

如何將 NumPy ndarray 轉換為 Range

如何將 NumPy ndarray 轉換為名稱(命名範圍)

有時候,您可能希望為 Excel 中的特定數據範圍分配一個有意義的名稱。這使得在公式、圖表或其他工作表中引用數據變得更容易。在本節中,我們將向您展示如何使用 Python 和 Aspose.Cells 將 NumPy 轉換為 Excel 命名範圍。通過創建命名範圍,您可以在 Excel 中更有效地處理您的 NumPy 數據。

按照以下步驟使用 Aspose.Cells 將 NumPy ndarray 轉換為 Excel 中的命名範圍。

  1. 在Python中創建NumPy數組。
  2. 創建一個新的工作簿並訪問目標工作表。
  3. 遍歷陣列並將每個值插入工作表中。
  4. 定義一個覆蓋匯入數據的範圍。
  5. 為該範圍指定一個名稱。
  6. 將工作簿另存為 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 轉換為名稱(命名範圍)

如何將 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 提問,我們將樂意協助您。

見亦如此