2024年2月20日 星期二

[研究]ASP.NET WebForm 用 ClosedXML 匯出 CSV ANSI 和 CSV UTF-8 ( .csv)(逗號分隔檔)

[研究]ASP.NET WebForm 用 ClosedXML 匯出 CSV ANSI 和 CSV UTF-8 ( .csv)(逗號分隔檔)

2024-02-20

環境:Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19

********************************************************************************

逗號分隔值(Comma-Separated Values,CSV,有時也稱為字元分隔值,因為分隔字元也可以不是逗號),其檔案以純文字形式儲存表格資料(數字和文字)。

https://zh.wikipedia.org/zh-tw/%E9%80%97%E5%8F%B7%E5%88%86%E9%9A%94%E5%80%BC

********************************************************************************

請問 CSV ANSI 和 CSV UTF-8 的演變 ?

ChatGPT

CSV(逗號分隔值)是一種常見的檔案格式,用於存儲表格數據,其中每行表示表格中的一行,並使用逗號分隔每個字段。CSV ANSI 和 CSV UTF-8 是兩種不同的 CSV 檔案格式,主要是關於字符編碼方面的區別。

CSV ANSI:

ANSI 是一種字符編碼方案,通常僅支援基本的拉丁字母、數字和符號,無法支援全球各種語言的字符。它可能受到不同操作系統和地區的限制。

CSV ANSI 格式的檔案使用 ANSI 字符編碼,這意味著它只能支援有限的字符集,如果在檔案中使用了非 ANSI 字符,可能會出現亂碼或者無法正確顯示的情況。

CSV UTF-8:

UTF-8 是一種字符編碼方案,支援世界上幾乎所有的字符,包括拉丁字母、漢字、西里爾字母等。它是一種Unicode編碼方式,使得不同語言的字符都能夠被正確地表示和處理。

CSV UTF-8 格式的檔案使用UTF-8字符編碼,因此可以支援更廣泛的字符集,而且可以確保跨不同系統和平台的兼容性。

演變方面,隨著全球化的發展和對字符支援的需求增加,越來越多的系統和軟件開始使用 UTF-8 字符編碼,因此,儘管在過去可能會遇到 CSV ANSI 格式的檔案,但現在更常見的是使用 CSV UTF-8 格式,以確保兼容性和支援更廣泛的字符集。

********************************************************************************

ASP.NET WebForm WebApplication 

using ClosedXML.Excel;
using System.Text;

protected void GenerateCSV_ANSI()
{
    var wb = new XLWorkbook();
    var ws = wb.Worksheets.Add("Sheet1");

    // 假設 data 是你要寫入 CSV 的資料
    var data = new List<List<string>>
    {
        new List<string> { "Column1", "Column2", "Column3" },
        new List<string> { "Value1", "Value2", "Value3" },
        // 添加更多的資料行...
    };

    // 將資料寫入工作表
    for (int i = 0; i < data.Count; i++)
    {
        for (int j = 0; j < data[i].Count; j++)
        {
            ws.Cell(i + 1, j + 1).Value = data[i][j];
        }
    }

    // 將工作簿另存為 CSV 檔案,使用 ANSI 編碼
    var encoding = Encoding.GetEncoding("Windows-1252"); // ANSI 編碼
    wb.SaveAs("output_ansi.csv", new SaveOptions { EvaluateFormulasBeforeSaving = false, Encoding = encoding });

    // 將工作簿另存為 CSV 檔案,使用 UTF-8 編碼
    // wb.SaveAs("output_utf8.csv", new SaveOptions { EvaluateFormulasBeforeSaving = false, Encoding = Encoding.UTF8 });
}


主要的差異在於另存為 CSV 時指定的編碼。對於 CSV ANSI,使用的是 Windows-1252 編碼,這是一種常見的 ANSI 編碼。而對於 CSV UTF-8,則使用 UTF-8 編碼,這是一種支援更廣泛字符集的 Unicode 編碼。

********************************************************************************

(完)

相關

[研究][ASP.NET][WebForm] 匯出寫入 .csv
https://shaurong.blogspot.com/2021/02/aspnet-csv.html

[研究]ASP.NET WebForm 用 ClosedXML 匯出 CSV ANSI 和 CSV UTF-8 ( .csv)(逗號分隔檔)https://shaurong.blogspot.com/2024/02/aspnet-webform-closedxml-csv-ansi-csv.html


沒有留言:

張貼留言