最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用C#將Excel轉(zhuǎn)為XML的兩種方案

 更新時(shí)間:2025年09月12日 10:28:28   作者:咕白m625  
在數(shù)據(jù)處理場(chǎng)景中,Excel文件常作為中間格式存在,但其結(jié)構(gòu)化程度有限,若需將Excel數(shù)據(jù)導(dǎo)入系統(tǒng)、進(jìn)行二次分析或與XML格式服務(wù)對(duì)接,Excel 轉(zhuǎn) XML 成為一項(xiàng)高頻需求,所以本文給大家介紹了使用C#將Excel轉(zhuǎn)為XML的兩種方案,需要的朋友可以參考下

在數(shù)據(jù)處理場(chǎng)景中,Excel文件常作為中間格式存在,但其結(jié)構(gòu)化程度有限。若需將Excel數(shù)據(jù)導(dǎo)入系統(tǒng)、進(jìn)行二次分析或與XML格式服務(wù)對(duì)接,Excel 轉(zhuǎn) XML 成為一項(xiàng)高頻需求。然而,傳統(tǒng)方法往往依賴復(fù)雜腳本或第三方工具,效率低、易出錯(cuò)。

本文將分享一個(gè)輕量、穩(wěn)定的方案:使用免費(fèi)庫(kù) Free Spire.XLS for .NET ,通過(guò) C# 代碼實(shí)現(xiàn) Excel 到XML 的高效轉(zhuǎn)換。

優(yōu)勢(shì)分析

相比手動(dòng)解析或使用OpenXML,F(xiàn)ree Spire.XLS提供成熟的 .NET 封裝,支持無(wú)需安裝 Office 環(huán)境即可讀寫(xiě) Excel 文件。

對(duì)比項(xiàng)傳統(tǒng)方法(如VBA)Free Spire.XLS for .NET
依賴Office? 需要安裝? 無(wú)依賴
開(kāi)發(fā)效率??????
轉(zhuǎn)換穩(wěn)定性?? 易出錯(cuò)? 高度可靠
適用場(chǎng)景小型腳本輕量級(jí)

需注意免費(fèi)版雖無(wú)任何水印,但是有一定頁(yè)數(shù)限制。

方案一:手動(dòng)構(gòu)建 XML 結(jié)構(gòu)(靈活可控)

以下代碼通過(guò)手動(dòng)遍歷 Excel 單元格、構(gòu)建 XML 節(jié)點(diǎn)的方式,實(shí)現(xiàn)數(shù)據(jù)從 Excel 到 XML 的轉(zhuǎn)換:

using System.Xml;
using Spire.Xls;

class ExcelToXmlConverter
{
    static void Main(string[] args)
    {
        // 創(chuàng)建Workbook對(duì)象
        Workbook wb = new Workbook();

        // 加載Excel文件
        wb.LoadFromFile("data.xlsx");

        // 獲取第一個(gè)工作表
        Worksheet ws = wb.Worksheets[0];

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

        // 創(chuàng)建XML文檔
        XmlDocument xmlDoc = new XmlDocument();
        XmlDeclaration xmlDeclaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
        xmlDoc.AppendChild(xmlDeclaration);

        // 創(chuàng)建根元素
        XmlElement root = xmlDoc.CreateElement("Worksheet");
        xmlDoc.AppendChild(root);

        // 設(shè)置工作表名稱
        XmlElement nameElement = xmlDoc.CreateElement("Name");
        nameElement.InnerText = ws.Name;
        root.AppendChild(nameElement);

        // 遍歷已使用的區(qū)域(行)
        for (int i = 0; i < usedRange.Rows.Length; i++)
        {
            XmlElement rowElement = xmlDoc.CreateElement("Row");
            root.AppendChild(rowElement);

            // 遍歷列
            for (int j = 0; j < usedRange.Columns.Length; j++)
            {
                // 獲取單元格的值
                object cellValue = usedRange[i+1, j+1].Value;

                // 創(chuàng)建單元格元素
                XmlElement cellElement = xmlDoc.CreateElement("Cell");
                rowElement.AppendChild(cellElement);

                // 創(chuàng)建數(shù)據(jù)元素
                XmlElement dataElement = xmlDoc.CreateElement("Data");
                dataElement.InnerText = cellValue?.ToString() ?? string.Empty;
                cellElement.AppendChild(dataElement);
            }
        }

        // 保存XML文件
        xmlDoc.Save("工作表寫(xiě)入XML.xml");

        // 釋放資源
        wb.Dispose();
    }
}

該方案的核心優(yōu)勢(shì)在于高度靈活可控,開(kāi)發(fā)者可根據(jù)需求自定義 XML 的結(jié)構(gòu)與節(jié)點(diǎn)命名:

  • ? 節(jié)點(diǎn)自定義:可自由修改根節(jié)點(diǎn)(如將 <Worksheet> 改為 <ExcelData> )、行節(jié)點(diǎn)(<Row>)、單元格節(jié)點(diǎn)(<Cell>)的名稱,滿足不同場(chǎng)景下的 XML 格式要求;
  • ? 結(jié)構(gòu)可視化:通過(guò)手動(dòng)創(chuàng)建節(jié)點(diǎn),開(kāi)發(fā)者能清晰掌控 XML 的層級(jí)關(guān)系(如 Worksheet -> Name、Worksheet -> Row -> Cell -> Data),便于后續(xù) XML 文件的解析與使用。

方案二:調(diào)用內(nèi)置方法(簡(jiǎn)潔高效

Free Spire.XLS 組件提供了 SaveAsXml 方法,無(wú)需手動(dòng)構(gòu)建 XML 結(jié)構(gòu)即可實(shí)現(xiàn) Excel 到 XML 的快速轉(zhuǎn)換,代碼如下:

using Spire.Xls;

namespace ExcelToXML
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Load an Excel file
            Workbook workbook = new Workbook();
            workbook.LoadFromFile("Sample.xlsx");

            // Save the Excel file in Open XML file format
            workbook.SaveAsXml("ExcelToXML.xml");
        }
    }
}

該方案的最大優(yōu)勢(shì)在于簡(jiǎn)潔高效,通過(guò)封裝好的 API 大幅簡(jiǎn)化開(kāi)發(fā)流程:

  • ? 代碼極簡(jiǎn):僅需 3 行核心代碼,即可完成轉(zhuǎn)換,降低開(kāi)發(fā)難度與代碼維護(hù)成本;
  • ? 遵循標(biāo)準(zhǔn)格式SaveAsXml 方法生成的 XML 文件嚴(yán)格遵循Open XML 規(guī)范(微軟定義的開(kāi)放式文檔格式標(biāo)準(zhǔn)),確保文件的兼容性,可被其他支持 Open XML 的軟件(如 Office、Apache POI 等)正常解析;

兩種方案適用場(chǎng)景

開(kāi)發(fā)者可根據(jù)實(shí)際需求選擇合適方案:

  1. 若需生成自定義格式的 XML 文件(如用于特定系統(tǒng)的數(shù)據(jù)交換、自定義配置文件),或需對(duì) Excel 數(shù)據(jù)進(jìn)行過(guò)濾、格式化等處理,建議選擇方案一;
  2. 若僅需快速將 Excel 轉(zhuǎn)換為標(biāo)準(zhǔn) Open XML 格式,且無(wú)需自定義結(jié)構(gòu)(如用于 Office 軟件兼容、通用數(shù)據(jù)備份),建議選擇方案二。

到此這篇關(guān)于使用C#將Excel轉(zhuǎn)為XML的兩種方案的文章就介紹到這了,更多相關(guān)C# Excel轉(zhuǎn)為XML內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • c#實(shí)現(xiàn)在圖上畫(huà)漢字

    c#實(shí)現(xiàn)在圖上畫(huà)漢字

    這篇文章主要介紹了c#實(shí)現(xiàn)在圖上畫(huà)漢字方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • C#實(shí)現(xiàn)將json轉(zhuǎn)換為DataTable的方法

    C#實(shí)現(xiàn)將json轉(zhuǎn)換為DataTable的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)將json轉(zhuǎn)換為DataTable的方法,涉及C#操作json及DataTable的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • C# 多線程對(duì)資源讀寫(xiě)時(shí)如何控制的方法

    C# 多線程對(duì)資源讀寫(xiě)時(shí)如何控制的方法

    這篇文章主要介紹了C# 多線程對(duì)資源讀寫(xiě)時(shí)如何控制的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • Qt讀取本地系統(tǒng)時(shí)間的幾種方式小結(jié)

    Qt讀取本地系統(tǒng)時(shí)間的幾種方式小結(jié)

    這篇文章主要介紹了Qt讀取本地系統(tǒng)時(shí)間的幾種方式小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • c#菜單動(dòng)態(tài)合并的實(shí)現(xiàn)方法

    c#菜單動(dòng)態(tài)合并的實(shí)現(xiàn)方法

    這篇文章主要介紹了c#菜單動(dòng)態(tài)合并的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • C#純代碼實(shí)現(xiàn)打字游戲

    C#純代碼實(shí)現(xiàn)打字游戲

    這篇文章主要介紹了這篇文章主要為大家詳細(xì)介紹了C#純代碼實(shí)現(xiàn)打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • C#中的GDI+圖像編程詳解

    C#中的GDI+圖像編程詳解

    本文詳細(xì)講解了C#中的GDI+圖像編程,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入到SQL server數(shù)據(jù)庫(kù)

    C#實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入到SQL server數(shù)據(jù)庫(kù)

    這篇文章主要為大家詳細(xì)介紹了在C#中如何實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入到SQL server數(shù)據(jù)庫(kù)中,文中的示例代碼簡(jiǎn)潔易懂,希望對(duì)大家有一定的幫助
    2024-03-03
  • C#中間語(yǔ)言及ILDASM工具用法

    C#中間語(yǔ)言及ILDASM工具用法

    這篇文章介紹了C#中間語(yǔ)言及ILDASM工具用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法

    C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法

    這篇文章主要介紹了C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法,較為詳細(xì)的分析了DeflateStream方法對(duì)文件進(jìn)行壓縮及解壓縮的步驟與技巧,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

磐石市| 涟水县| 衡山县| 敖汉旗| 泗阳县| 龙南县| 始兴县| 莱州市| 青浦区| 邮箱| 观塘区| 温宿县| 错那县| 开江县| 黄石市| 满洲里市| 嫩江县| 印江| 大埔县| 甘南县| 华阴市| 宿松县| 遵义市| 永嘉县| 通江县| 财经| 百色市| 霍林郭勒市| 布尔津县| 雷山县| 澎湖县| 泰州市| 寿光市| 景泰县| 金坛市| 淮北市| 清丰县| 乐昌市| 普安县| 张北县| 西藏|