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

C#實現(xiàn)XLS與XLSX格式雙向互轉(zhuǎn)(無需依賴?Office)

 更新時間:2026年04月23日 08:28:00   作者:Eiceblue  
不同系統(tǒng),老舊業(yè)務(wù)終端,第三方導(dǎo)出工具常生成不同后綴的表格文件,因此 XLS 與 XLSX 互相轉(zhuǎn)換成為后端開發(fā)中的高頻需求,本文將講解如何使用 C# 快速完成雙向格式轉(zhuǎn)換,不依賴本地安裝 Office 套件,希望對大家有所幫助

日常 .NET 項目開發(fā)、數(shù)據(jù)對接、報表歸檔中,經(jīng)常遇到新舊 Excel 格式不兼容的問題。XLS(Excel 97-2003)為二進制格式,兼容性廣但單文件數(shù)據(jù)容量有限;XLSX(Excel 2007+)為開放式 XML 格式,體積更小、擴展性更強。

不同系統(tǒng)、老舊業(yè)務(wù)終端、第三方導(dǎo)出工具常生成不同后綴的表格文件,因此 XLS 與 XLSX 互相轉(zhuǎn)換成為后端開發(fā)中的高頻需求。本文將講解如何使用 C# 快速完成雙向格式轉(zhuǎn)換,不依賴本地安裝 Office 套件。

一、技術(shù)方案選型

原生 .NET 缺少直接解析、轉(zhuǎn)換 Excel 新舊格式的內(nèi)置 API。傳統(tǒng)方案大多依賴 Office Interop 組件,存在以下弊端:

  • 必須在服務(wù)器/運行環(huán)境安裝微軟 Office,部署成本高
  • 進程容易殘留,長期運行易造成內(nèi)存泄漏
  • 權(quán)限配置復(fù)雜,容器化、Linux 環(huán)境無法適配

因此,本文采用輕量級第三方免費 Excel 處理類庫,以獨立解析引擎完成表格讀取與另存導(dǎo)出,僅引入基礎(chǔ) NuGet 包,無額外環(huán)境依賴,代碼輕量化、可直接集成至控制臺、WinForm、ASP.NET 各類項目。

安裝方式

通過 NuGet 包管理器安裝:

Install-Package FreeSpire.XLS

免費版限制:Free Spire.XLS 在讀寫 XLS 格式時,每個工作簿最多處理 5 個工作表,且每個工作表最多 200 行數(shù)據(jù)。使用時需注意此限制,避免內(nèi)容被截斷。

二、了解 XLS 與 XLSX 的本質(zhì)差異

特性XLS (97-2003)XLSX (2007+)
底層格式二進制復(fù)合文檔 (BIFF)ZIP 壓縮包 + XML
最大行數(shù)65,5361,048,576
最大列數(shù)256 (IV)16,384 (XFD)
工作表最大數(shù)量約 255無硬性限制(受內(nèi)存限制)
單元格字符數(shù)32,76732,767
顏色支持56 色調(diào)色板1600 萬色(24位)
條件格式有限豐富
圖表傳統(tǒng)圖表新圖表引擎
數(shù)據(jù)透 視表支持增強版

由于舊格式的限制,XLSX → XLS 轉(zhuǎn)換時,復(fù)雜圖表、單元格樣式、新公式等可能會丟失或降級。建議轉(zhuǎn)換前對關(guān)鍵數(shù)據(jù)進行復(fù)核。

三、XLS 轉(zhuǎn) XLSX(舊格式轉(zhuǎn)新格式)

加載舊版 XLS 文件,通過指定高版本 ExcelVersion 枚舉,另存為 XLSX 格式。

using Spire.Xls;
using System;

namespace ConvertXlsToXlsx
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                // 1. 創(chuàng)建 Workbook 對象
                using (Workbook workbook = new Workbook())
                {
                    // 2. 加載 .xls 文件
                    workbook.LoadFromFile("Input.xls");

                    // 3. 轉(zhuǎn)換為 .xlsx 并保存
                    workbook.SaveToFile("ToXlsx.xlsx", ExcelVersion.Version2016);
                }

                Console.WriteLine("轉(zhuǎn)換完成!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"轉(zhuǎn)換失?。簕ex.Message}");
            }
        }
    }
}

說明ExcelVersion 枚舉提供了多種版本,如 Version97to2003(.xls)、Version2010、Version2013、Version2016 等。保存為 .xlsx 時推薦選最新版本,兼容性最好。。

四、XLSX 轉(zhuǎn) XLS(新格式轉(zhuǎn)舊格式)

針對僅能識別 XLS 格式的老舊系統(tǒng),將新版表格向下兼容轉(zhuǎn)換。代碼邏輯與反向轉(zhuǎn)換一致,僅修改導(dǎo)出版本參數(shù)。

using Spire.Xls;
using System;

namespace ConvertXlsxToXls
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                using (Workbook workbook = new Workbook())
                {
                    workbook.LoadFromFile("Input.xlsx");
                    workbook.SaveToFile("ToXls.xls", ExcelVersion.Version97to2003);
                }

                Console.WriteLine("轉(zhuǎn)換完成!");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"轉(zhuǎn)換失?。簕ex.Message}");
            }
        }
    }
}

五、批量轉(zhuǎn)換與文件夾處理

實際項目中常需批量轉(zhuǎn)換整個目錄下的 Excel 文件。以下示例支持將指定文件夾內(nèi)所有 .xls 轉(zhuǎn)為 .xlsx(反之類似)。

批量 XLS → XLSX 示例

using Spire.Xls;
using System;
using System.IO;

namespace BatchConvert
{
    class Program
    {
        static void Main(string[] args)
        {
            string sourceFolder = @"C:\ExcelFiles\XlsFiles";
            string destFolder = @"C:\ExcelFiles\XlsxFiles";

            if (!Directory.Exists(destFolder))
                Directory.CreateDirectory(destFolder);

            foreach (string xlsFile in Directory.GetFiles(sourceFolder, "*.xls"))
            {
                string fileName = Path.GetFileNameWithoutExtension(xlsFile);
                string xlsxPath = Path.Combine(destFolder, fileName + ".xlsx");

                try
                {
                    using (Workbook workbook = new Workbook())
                    {
                        workbook.LoadFromFile(xlsFile);
                        workbook.SaveToFile(xlsxPath, ExcelVersion.Version2016);
                    }
                    Console.WriteLine($"已轉(zhuǎn)換: {xlsFile} → {xlsxPath}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"轉(zhuǎn)換失敗 {xlsFile}: {ex.Message}");
                    // 可將錯誤寫入日志文件
                }
            }

            Console.WriteLine("批量轉(zhuǎn)換完成!");
        }
    }
}

類似地,將 *.xlsx 轉(zhuǎn)為 *.xls 只需調(diào)整搜索模式與保存版本。

六、總結(jié)

C# 實現(xiàn) XLS/XLSX 互轉(zhuǎn)僅需 3 行核心代碼:

創(chuàng)建 Workbook → 加載文件 → 指定版本保存

本文提供的代碼可直接復(fù)制到項目中,稍作路徑修改即可運行。無論是單個文件轉(zhuǎn)換還是批量處理,這套方案均穩(wěn)定高效。若需處理更復(fù)雜的 Excel 場景(如修改單元格、生成圖表),該庫的 API 同樣可以滿足。

到此這篇關(guān)于C#實現(xiàn)XLS與XLSX格式雙向互轉(zhuǎn)(無需依賴 Office)的文章就介紹到這了,更多相關(guān)C# XLS與XLSX互轉(zhuǎn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#中l(wèi)ock死鎖實例教程

    C#中l(wèi)ock死鎖實例教程

    這篇文章主要介紹了C#中l(wèi)ock死鎖的用法,對于共享資源的訪問及C#程序設(shè)計的安全性而言,有著非常重要的意義!需要的朋友可以參考下
    2014-08-08
  • 深入解析C#設(shè)計模式中對橋接模式的具體運用

    深入解析C#設(shè)計模式中對橋接模式的具體運用

    這篇文章主要介紹了C#設(shè)計模式中對橋接模式的具體運用,橋接模式所強調(diào)的解耦在代碼維護中非常有用,需要的朋友可以參考下
    2016-02-02
  • WCF實現(xiàn)進程間管道通信Demo分享

    WCF實現(xiàn)進程間管道通信Demo分享

    下面小編就為大家分享一篇WCF實現(xiàn)進程間管道通信Demo,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • C#文件目錄操作方法匯總

    C#文件目錄操作方法匯總

    本文主要列舉出C#文件和目錄操作的一些方法,包括創(chuàng)建、移動、遍歷目錄,讀寫文件等方法,有需要的小伙伴可以學(xué)習(xí)一下。
    2016-04-04
  • C#通過不安全代碼看內(nèi)存加載的示例詳解

    C#通過不安全代碼看內(nèi)存加載的示例詳解

    C#中類型分為值類型和引用類型。這篇文章將用不安全代碼的地址,來看一下值類型和引用類型的存儲,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-07-07
  • C# 并行和多線程編程——Task進階知識

    C# 并行和多線程編程——Task進階知識

    這篇文章主要介紹了C# 并行和多線程編程——Task進階知識的的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • [C#].NET中幾種Timer的使用實例

    [C#].NET中幾種Timer的使用實例

    本篇文章主要介紹了.NET中幾種Timer的使用,具有一定的參考價值,有興趣的可以了解一下。
    2016-12-12
  • C#圖像處理之圖像平移的方法

    C#圖像處理之圖像平移的方法

    這篇文章主要介紹了C#圖像處理之圖像平移的方法,涉及C#操作圖形實現(xiàn)平移的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#使用RabbitMQ的詳細(xì)教程

    C#使用RabbitMQ的詳細(xì)教程

    RabbitMQ?是一個功能強大的消息隊列系統(tǒng),可用于在分布式系統(tǒng)中進行可靠的消息傳遞,本篇博客將詳細(xì)介紹如何在?C#?中使用?RabbitMQ?實現(xiàn)各種消息隊列操作,并通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • c#定時運行程序分享(定時程序)

    c#定時運行程序分享(定時程序)

    寫了一個小的定時程序,定時觸發(fā)后可以按要求運行其它代碼,分享一下操作過程,希望能對大家有幫助
    2014-01-01

最新評論

新民市| 芦溪县| 乐东| 景泰县| 安顺市| 辽宁省| 奉贤区| 花垣县| 襄汾县| 环江| 昌吉市| 岳普湖县| 奉节县| 上思县| 广河县| 宁武县| 长岭县| 米脂县| 英山县| 双鸭山市| 防城港市| 黎平县| 商城县| 兰西县| 怀柔区| 象州县| 柳河县| 旅游| 乐业县| 桓台县| 洛扎县| 溆浦县| 尉氏县| 涞水县| 双峰县| 高尔夫| 上栗县| 得荣县| 巴彦淖尔市| 宁津县| 清新县|