安全、輕量、可控資源上限的多格式檔案讀取器(目前支援 ODS)。
License
—
Deps
1
Install Size
—
Vulns
✓ 0
Published
Dec 2, 2025
$ dotnet add package NeoFileMagic
提供「安全、輕量、可控資源上限」的多種檔案格式讀取器, 以支援後續應用快速擷取結構化資料(目前先提供 ODS,後續會陸續擴充其他格式)。
dotnet add package NeoFileMagicusing NeoFileMagic.FileReader.Ods;
// 從檔案載入 ODS
var doc = Ods.Load("sample.ods");
// 讀取第一個工作表的 (0,0) 儲存格
var cell = doc.Sheets[0].GetCell(0, 0);
Console.WriteLine(Ods.OneLine(cell));
using NeoFileMagic.FileReader.Ods;
var doc = Ods.Load("sample.ods");
var sheet = doc.Sheets[0];
for (int r = 0; r < sheet.RowCount; r++)
{
var row = sheet.Rows[r];
for (int c = 0; c < row.ColumnCount; c++)
{
var cell = row.Cells[c];
// 以單行輸出:換行/Tab 摺疊為空白
Console.Write(Ods.OneLine(cell));
Console.Write('\t');
}
Console.WriteLine();
}
using NeoFileMagic.FileReader.Ods;
var options = new OdsReaderOptions
{
// 預設 true:若檔案加密則丟出 NotSupportedException
ThrowOnEncrypted = true,
// 控制上限,避免惡意/異常檔案造成記憶體壓力
MaxSheets = 64,
MaxRowsPerSheet = 100_000,
MaxColumnsPerRow = 256,
MaxRepeatedRows = 100_000,
MaxRepeatedColumns = 256,
};
var doc = Ods.Load("sample.ods", options);
嚴格依表頭(或 [JsonPropertyName])對應欄位,欄位順序/缺漏或格式錯誤會拋出具體例外。
using System.Text.Json.Serialization;
using NeoFileMagic.FileReader.Ods;
public sealed class Person
{
[JsonPropertyName("Name")] public string Name { get; set; } = string.Empty;
[JsonPropertyName("Age")] public int Age { get; set; }
}
var doc = Ods.Load("people.ods");
var sheet = doc.Sheets[0];
var list = Ods.DeserializeSheetOrThrow<Person>(sheet);
// list 為強型別結果,若欄位/資料不符會拋出 Ods* 相關例外
using NeoFileMagic.FileReader.Ods;
var doc = await Ods.LoadFromUrlAsync("https://example.com/data.ods");建置/測試:
dotnet restore、dotnet build NeoFileMagic -c Debugdotnet test