欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用Python讀取Excel數(shù)據(jù)并寫(xiě)入到CSV、XML和文本

 更新時(shí)間:2024年03月18日 10:26:19   作者:Eiceblue  
Excel工作簿是常用的表格格式,許多數(shù)據(jù)呈現(xiàn)、數(shù)據(jù)分析和數(shù)據(jù)匯報(bào)都是以Excel工作表的形式進(jìn)行,本文將演示如何運(yùn)用Python編程語(yǔ)言,將Excel工作表中的豐富數(shù)據(jù)導(dǎo)入到CSV、XML或文本中,需要的朋友可以參考下

前言

Excel工作簿是常用的表格格式,許多數(shù)據(jù)呈現(xiàn)、數(shù)據(jù)分析和數(shù)據(jù)匯報(bào)都是以Excel工作表的形式進(jìn)行。然而,在實(shí)際的數(shù)據(jù)管理、分析或自動(dòng)化流程構(gòu)建過(guò)程中,我們常常需要將這些Excel中的數(shù)據(jù)遷移至更其他數(shù)據(jù)系統(tǒng),或者以文本形式存儲(chǔ)以便與其他程序進(jìn)行交互。Python作為一種強(qiáng)大且靈活的編程語(yǔ)言,能夠高效地實(shí)現(xiàn)這一目標(biāo)。本文將演示如何運(yùn)用Python編程語(yǔ)言,將Excel工作表中的豐富數(shù)據(jù)導(dǎo)入到CSV、XML或文本中,我們也可以使用文中的方法讀取數(shù)據(jù)并寫(xiě)入到其他文件或數(shù)據(jù)系統(tǒng)中。

本文所使用的方法需要用到Spire.XLS for Python,可從官網(wǎng)獲取或通過(guò)PyPI:pip install Spire.XLS

示例Excel文件

Python讀取Excel文件

直接將Excel工作表轉(zhuǎn)換為CSV

使用此API,我們可以直接獲取指定工作表并轉(zhuǎn)換為CSV文件。以下是操作步驟:

  1. 導(dǎo)入所需模塊。
  2. 創(chuàng)建 Workbook 類的對(duì)象 wb
  3. 使用 wb.LoadFromFile() 方法加載指定路徑下的Excel文件。
  4. 獲取指定索引位置處的工作表 ws
  5. 使用 Worksheet.SaveToFile(string fileName, string Separator, Encoding) 方法將工作表轉(zhuǎn)換為CSV文件并保存。
  6. 釋放資源。

代碼示例

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象
wb = Workbook()

# 加載 Excel 文件
wb.LoadFromFile("示例.xlsx")

# 獲取工作表
ws = wb.Worksheets.get_Item(0)

# 將工作表保存為 CSV 文件
ws.SaveToFile(f"output/{ws.Name}.csv", ",", Encoding.get_UTF8())
wb.Dispose()

提取結(jié)果

Python Excel工作表轉(zhuǎn)CSV

讀取Excel工作表數(shù)據(jù)保存到CSV

除了直接轉(zhuǎn)換外,我們還可以直接讀取指定單元格范圍的數(shù)據(jù),并寫(xiě)入CSV文件,來(lái)實(shí)現(xiàn)自定義的數(shù)據(jù)提取。以下是操作步驟:

  1. 導(dǎo)入所需模塊。
  2. 創(chuàng)建 Workbook 類的對(duì)象 wb。
  3. 使用 wb.LoadFromFile() 方法加載指定路徑下的Excel文件。
  4. 獲取指定索引位置處的工作表 ws。
  5. 確定工作表的已使用范圍(即有數(shù)據(jù)的部分)作為 usedRange。
  6. 遍歷 usedRange 中的每一行和每一列:
    • 獲取單元格的值,并對(duì)包含逗號(hào)的字符串單元格值添加雙引號(hào)。
    • 將處理過(guò)的單元格值添加到 rowData 列表中。
  7. 對(duì)每一行的 rowData 列表進(jìn)行處理,將其轉(zhuǎn)換為逗號(hào)分隔的字符串,并在末尾添加換行符,然后將結(jié)果追加到 data 字符串中。
  8. 打開(kāi)一個(gè)CSV文件(以當(dāng)前工作表名稱命名),以寫(xiě)模式和UTF-8編碼將 data 字符串內(nèi)容寫(xiě)入該文件。
  9. 使用 wb.Dispose() 方法釋放資源,清理內(nèi)存。

代碼示例

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象
wb = Workbook()

# 加載 Excel 文件
wb.LoadFromFile("示例.xlsx")

# 獲取工作表
ws = wb.Worksheets.get_Item(0)

# 獲取已使用的區(qū)域
usedRange = ws.AllocatedRange

data = ""
# 遍歷已使用的區(qū)域
for i in range(1, usedRange.Rows.Count):
    rowData = []
    for j in range(len(usedRange.Rows.get_Item(i).Columns)):
        # 獲取單元格的值
        cellValue = usedRange[i + 1, j + 1].Value
        # 對(duì)包含逗號(hào)的數(shù)據(jù)添加引號(hào)
        if isinstance(cellValue, str) and ',' in cellValue:
            cellValue = f'"{cellValue}"'
        rowData.append(cellValue)
    data += ','.join(rowData) + '\n'

# 將數(shù)據(jù)寫(xiě)入 CSV 文件
with open(f"output/CSV/{ws.Name}.csv", "w", encoding='utf-8') as f:
    f.write(data)
wb.Dispose()

提取效果

Python讀取Excel工作表寫(xiě)入CSV

將Excel工作簿轉(zhuǎn)換為OpenXML

使用 Workbook 類的 SaveAsXml 方法可以直接將一個(gè)工作簿轉(zhuǎn)換為Open XML文件。以下是操作步驟:

  • 導(dǎo)入所需模塊。
  • 創(chuàng)建 Workbook 類的對(duì)象 wb。
  • 使用 wb.LoadFromFile() 方法加載指定路徑下的Excel文件。
  • 使用 Workbook.SaveAsXml() 方法將工作簿轉(zhuǎn)換為Open XML文件并保存。
  • 釋放資源。

代碼示例

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象
wb = Workbook()

# 加載 Excel 文件
wb.LoadFromFile("示例.xlsx")

# 保存為 OpenXML 文件
wb.SaveAsXml("output/工作簿轉(zhuǎn)OpenXML.xml")
wb.Dispose()

提取效果

Python Excel轉(zhuǎn)換為Open XML

讀取Excel工作表數(shù)據(jù)寫(xiě)入XML

除了將工作簿直接轉(zhuǎn)換為Open XML文件外,我們還可以讀取表格數(shù)據(jù),制作自定義的XML文件。我們可以引入 xml.etree.ElementTree 來(lái)方便對(duì)XML的寫(xiě)入。以下是操作示例:

  1. 導(dǎo)入所需模塊。
  2. 創(chuàng)建 Workbook 類的對(duì)象 wb。
  3. 使用 wb.LoadFromFile() 方法加載指定路徑下的Excel文件。
  4. 獲取工作表 ws,其索引為0。
  5. 獲取工作表中的已使用區(qū)域 usedRange。
  6. 創(chuàng)建 XML 的根元素 root,命名為 “Worksheet”。
  7. 在 XML 根元素下創(chuàng)建子元素 “Name”,并將其文本內(nèi)容設(shè)置為當(dāng)前工作表的名稱。
  8. 遍歷已使用的區(qū)域(按行):
    • 對(duì)于每一行,創(chuàng)建一個(gè) “Row” 子元素。
    • 再對(duì)該行的每個(gè)單元格進(jìn)行遍歷(按列):
      • 獲取單元格的值。
      • 在 “Row” 元素下創(chuàng)建一個(gè) “Cell” 子元素。
      • 在 “Cell” 元素下進(jìn)一步創(chuàng)建一個(gè) “Data” 子元素,將單元格值轉(zhuǎn)換為字符串并設(shè)置為其文本內(nèi)容。
  9. 將所有生成的 XML 元素構(gòu)建成一個(gè)完整的 XML 樹(shù)結(jié)構(gòu),存儲(chǔ)在 xml_tree 變量中。
  10. 使用 xml_tree.write() 方法將 XML 數(shù)據(jù)寫(xiě)入名為 “工作表寫(xiě)入XML.xml” 的文件中,同時(shí)指定 UTF-8 編碼和添加 XML 聲明。
  11. 最后,調(diào)用 wb.Dispose() 方法釋放資源,關(guān)閉并清理 Excel 工作簿對(duì)象。

代碼示例

import xml.etree.ElementTree as ET
from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象
wb = Workbook()

# 加載 Excel 文件
wb.LoadFromFile("示例.xlsx")

# 獲取工作表
ws = wb.Worksheets.get_Item(0)

# 獲取已使用的區(qū)域
usedRange = ws.AllocatedRange

# 創(chuàng)建 XML 根元素
root = ET.Element("Worksheet")

# 設(shè)置工作表名稱
name_element = ET.SubElement(root, "Name")
name_element.text = ws.Name

# 遍歷已使用的區(qū)域
for i in range(1, usedRange.Rows.Count):
    row_element = ET.SubElement(root, "Row")
    for j in range(len(usedRange.Rows.get_Item(i).Columns)):
        # 獲取單元格的值
        cellValue = usedRange[i + 1, j + 1].Value
        # 創(chuàng)建單元格元素
        cell_element = ET.SubElement(row_element, "Cell")
        # 創(chuàng)建數(shù)據(jù)元素
        data_element = ET.SubElement(cell_element, "Data")
        data_element.text = str(cellValue)

# 創(chuàng)建 XML 文檔
xml_tree = ET.ElementTree(root)
# 將數(shù)據(jù)寫(xiě)入 XML 文件
xml_tree.write("output/XML/工作表寫(xiě)入XML.xml", encoding="utf-8", xml_declaration=True)
wb.Dispose()

代碼示例

Python讀取Excel寫(xiě)入XML

讀取Excel工作表數(shù)據(jù)保存為文本

我們還可以直接讀取表格文件寫(xiě)入普通文本文件,用于其他用途。以下是操作步驟:

  1. 導(dǎo)入模塊。
  2. 初始化一個(gè)新的 Workbook 實(shí)例 wb。
  3. 使用 wb.LoadFromFile() 函數(shù)加載 Excel 文件。
  4. 選取第一個(gè)工作表(索引為0),賦值給變量 ws。
  5. 獲取該工作表的已使用區(qū)域,存放在變量 usedRange 中。
  6. 初始化一個(gè)空字符串 data,用于收集所有單元格的數(shù)據(jù)。
  7. 遍歷已使用的行與列范圍:
    • 對(duì)于每一行(從第二行開(kāi)始計(jì)數(shù),因?yàn)镋xcel索引從1開(kāi)始):
      • 對(duì)于該行內(nèi)的每一個(gè)單元格:
        • 獲取單元格的值,并將其轉(zhuǎn)換為字符串形式,追加到 data 后面。
        • 如果當(dāng)前單元格不是本行的最后一個(gè)單元格,則在其后添加制表符 \t 分隔數(shù)據(jù)。
      • 完成一行的所有單元格之后,在 data 后面添加換行符 \n,以便在輸出時(shí)區(qū)分不同行的數(shù)據(jù)。
  8. 使用 with open() 語(yǔ)句以“寫(xiě)入”模式打開(kāi)一個(gè)新文件,文件名基于當(dāng)前工作表的名稱加上 .txt 擴(kuò)展名,且路徑設(shè)為 “output/” 目錄下。
  9. 將之前拼接好的包含所有單元格數(shù)據(jù)的字符串 data 寫(xiě)入所創(chuàng)建的文本文件中。
  10. 關(guān)閉文件流,確保數(shù)據(jù)成功寫(xiě)入。
  11. 調(diào)用 wb.Dispose() 方法釋放資源,關(guān)閉并清理 Excel 工作簿對(duì)象。

代碼示例

from spire.xls import *
from spire.xls.common import *

# 創(chuàng)建 Workbook 對(duì)象
wb = Workbook()

# 加載 Excel 文件
wb.LoadFromFile("示例.xlsx")

# 獲取工作表
ws = wb.Worksheets.get_Item(0)

# 獲取已使用的區(qū)域
usedRange = ws.AllocatedRange

data = ""
# 遍歷已使用的區(qū)域
for i in range(1, usedRange.Rows.Count):
    for j in range(len(usedRange.Rows.get_Item(i).Columns)):
        # 獲取單元格的值
        cellValue = usedRange[i + 1, j + 1].Value
        data += str(cellValue)
        if j < len(usedRange.Rows.get_Item(i).Columns) - 1:
            data += "\t"
    data += "\n"

# 將數(shù)據(jù)寫(xiě)入 CSV 文件
with open(f"output/{ws.Name}.txt", "w", encoding='utf-8') as f:
    f.write(data)
wb.Dispose()

提取結(jié)果

Python讀取Excel工作表寫(xiě)入文本文件

以上內(nèi)容演示了如何使用Python讀取Excel數(shù)據(jù)并寫(xiě)入到CSV、XML和文本文件中。

到此這篇關(guān)于使用Python讀取Excel數(shù)據(jù)并寫(xiě)入到CSV、XML和文本的文章就介紹到這了,更多相關(guān)Python讀取Excel數(shù)據(jù)并導(dǎo)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)批量修改文件名實(shí)例

    Python實(shí)現(xiàn)批量修改文件名實(shí)例

    這篇文章主要介紹了Python實(shí)現(xiàn)批量修改文件名的方法,實(shí)例分析了兩種實(shí)現(xiàn)批量修改文件名的技巧,涉及os.rename重命名方法、正則替換及字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python?pandas.replace的用法詳解

    Python?pandas.replace的用法詳解

    在處理數(shù)據(jù)的時(shí)候,很多時(shí)候會(huì)遇到批量替換的情況,如果一個(gè)一個(gè)去修改效率過(guò)低,也容易出錯(cuò),replace()是很好的方法,下面這篇文章主要給大家介紹了關(guān)于Python?pandas.replace用法的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Python異常處理操作實(shí)例詳解

    Python異常處理操作實(shí)例詳解

    這篇文章主要介紹了Python異常處理操作,結(jié)合實(shí)例形式分析了Python常見(jiàn)的異常處理類型、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • 推薦下python/ironpython:從入門(mén)到精通

    推薦下python/ironpython:從入門(mén)到精通

    推薦下python/ironpython:從入門(mén)到精通...
    2007-10-10
  • Python除法保留兩位小數(shù)點(diǎn)的三種方法實(shí)現(xiàn)

    Python除法保留兩位小數(shù)點(diǎn)的三種方法實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于Python除法保留兩位小數(shù)點(diǎn)的三種方法實(shí)現(xiàn),在py應(yīng)用中有許多拿結(jié)果中的多個(gè)整數(shù)進(jìn)行運(yùn)算,難免少不了除法(如單位換算等),但是整數(shù)進(jìn)行運(yùn)算后只會(huì)返回整數(shù),一般結(jié)果基本需要精確到后兩位,需要的朋友可以參考下
    2023-08-08
  • Python中的JMESPath庫(kù)示例詳解

    Python中的JMESPath庫(kù)示例詳解

    這篇文章主要介紹了Python中的JMESPath庫(kù)示例詳解,JMESPath的基本思想是使用類似于XPath的路徑表達(dá)式來(lái)指定要從JSON結(jié)構(gòu)中提取哪些數(shù)據(jù),它允許您以一致的方式導(dǎo)航和過(guò)濾JSON對(duì)象和數(shù)組,需要的朋友可以參考下
    2023-09-09
  • 解決seaborn在pycharm中繪圖不出圖的問(wèn)題

    解決seaborn在pycharm中繪圖不出圖的問(wèn)題

    今天小編就為大家分享一篇解決seaborn在pycharm中繪圖不出圖的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • 如何關(guān)掉pycharm中的python console(圖解)

    如何關(guān)掉pycharm中的python console(圖解)

    本文通過(guò)圖文并茂的形式給大家介紹了如何關(guān)掉pycharm中的python console,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解

    今天小編就為大家分享一篇python 多進(jìn)程隊(duì)列數(shù)據(jù)處理詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • 詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法

    詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法

    這篇文章主要介紹了詳解django使用include無(wú)法跳轉(zhuǎn)的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03

最新評(píng)論