
XLParser
Trình phân tích công thức Excel C# mã nguồn mở
Phân tích, kiểm tra & duyệt công thức Excel với độ chính xác cao bằng cách sử dụng cây phân tích gọn nhẹ qua thư viện C# mã nguồn mở.
XLParser là gì?
XLParser là một thư viện C# có độ chính xác cao để phân tích công thức Microsoft Excel, được xây dựng trên khung phân tích Irony. Nó đạt tỷ lệ thành công 99,9% trên hơn một triệu công thức thực tế và được thiết kế đặc biệt cho việc phân tích và tái cấu trúc bảng tính. Ngữ pháp gọn nhẹ của nó — ít hơn 100 token và quy tắc sản xuất — giúp dễ hiểu, bảo trì hoặc chuyển sang các ngôn ngữ khác. XLParser đóng vai trò là triển khai tham chiếu của ngữ pháp Excel được công bố trong bài báo “A Grammar for Spreadsheet Formulas Evaluated on Two Large Datasets” và hỗ trợ các bộ dữ liệu chuẩn Enron và EUSES.
XLParser tạo ra cây phân tích cú pháp gọn gàng, cho phép duyệt, phân tích và chuyển đổi công thức một cách hiệu quả. Các nhà phát triển có thể sử dụng lớp `ExcelFormulaParser` để phân tích công thức và trích xuất tên hàm, tham chiếu và biểu thức con. Lớp `FormulaAnalyzer` còn hỗ trợ các thao tác nâng cao như `ParserReferences()` để lấy tất cả các tham chiếu ô, phạm vi và tên. Với trọng tâm vào nghiên cứu và công cụ, XLParser là lựa chọn lý tưởng cho việc đảm bảo chất lượng bảng tính, tái cấu trúc công thức và các công cụ giáo dục. Bạn có thể thử bản demo trực tuyến, cài đặt qua NuGet, hoặc biên dịch từ mã nguồn trên [XLParser GitHub](https://github.com/spreadsheetlab/XLParser).
Bắt đầu với XLParser
XLParser có sẵn qua NuGet và có thể được cài đặt bằng Package Manager Console hoặc giao diện NuGet của Visual Studio. Cách đơn giản nhất là chạy `Install-Package XLParser` trong Package Manager Console. Ngoài ra, bạn có thể tải bản phát hành mới nhất từ [XLParser GitHub](https://github.com/spreadsheetlab/XLParser), xây dựng solution và tham chiếu trực tiếp tới DLL. Thư viện được xây dựng trên khung Irony parser và không yêu cầu phụ thuộc bổ sung nào. Khi đã cài đặt, bạn có thể bắt đầu phân tích công thức Excel bằng lớp `ExcelFormulaParser`. Phương thức `Parse()` của nó nhận một chuỗi công thức và trả về cây phân tích để tiếp tục phân tích hoặc chuyển đổi.
Cài đặt XLParser qua NuGet
Install-Package XLParserPhân tích công thức Excel với độ tương thích cao
XLParser cung cấp tỷ lệ phân tích thành công 99,9% trên hơn một triệu công thức Excel thực tế, khiến nó trở thành một trong những bộ phân tích công thức C# đáng tin cậy nhất hiện có. Nó đã được xác thực trên các bộ dữ liệu chuẩn Enron và EUSES được sử dụng rộng rãi và được thiết kế để xử lý các công thức phức tạp, lồng nhau và thực tế — bao gồm các biểu thức mảng, tham chiếu và hàm. Mặc dù XLParser không quá hạn chế (có thể phân tích một số công thức mà Excel sẽ từ chối), sự linh hoạt này là có chủ đích cho các trường hợp nghiên cứu và phân tích. Các nhà phát triển có thể tin tưởng XLParser để phân tích phần lớn các công thức gặp trong bảng tính sản xuất, cho phép các quy trình phân tích công thức mạnh mẽ, tái cấu trúc và đảm bảo chất lượng. Ngữ pháp gọn nhẹ của nó đảm bảo khả năng bảo trì và di chuyển giữa các khung phân tích.
Phân tích một công thức Excel và kiểm tra cây phân tích cú pháp
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12)");
Console.WriteLine(tree.Print());Trích xuất tất cả các tham chiếu từ công thức Excel
XLParser bao gồm lớp `FormulaAnalyzer`, cung cấp các phương pháp mạnh mẽ để phân tích các công thức đã được phân tích cú pháp. Một trong những tính năng chính của nó là `ParserReferences()`, trả về tất cả các tham chiếu ô, phạm vi, phạm vi có tên và tham chiếu ngang/dọc được sử dụng trong một công thức. Điều này vô giá cho việc theo dõi phụ thuộc, phân tích tác động và các công cụ tái cấu trúc. Ví dụ, cho một công thức như `SUM(A1:B10, C12, NamedRange)`, `ParserReferences()` sẽ trả về danh sách các `A1:B10`, `C12` và `NamedRange`. Điều này cho phép các nhà phát triển xây dựng công cụ kiểm toán bảng tính, trực quan hoá luồng dữ liệu, hoặc phát hiện các phụ thuộc vòng. Phương thức hoạt động liền mạch với cấu trúc cây phân tích cú pháp gọn gàng, đảm bảo việc trích xuất nhanh chóng và chính xác ngay cả với các công thức lớn.
Trích xuất tất cả các tham chiếu bằng FormulaAnalyzer
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1:B10, C12, NamedRange)");
var analyzer = new FormulaAnalyzer(tree);
var references = analyzer.ParserReferences();
foreach (var refNode in references)
{
Console.WriteLine(refNode.Print());
}Duyệt và phân tích cây phân tích cú pháp
Đồ thị phân tích của XLParser được thiết kế để duyệt và phân tích hiệu quả. Lớp `ExcelFormulaParser` cung cấp các phương thức như `AllNodes` để lặp qua mọi nút trong cây, cho phép thực hiện phân tích tùy chỉnh, chuyển đổi hoặc logic xác thực. Các nhà phát triển có thể lọc các nút theo loại (ví dụ: hàm, tham chiếu, toán tử) và thực hiện các thao tác như đếm số lần xuất hiện của hàm, phát hiện các phạm vi đặt tên không được sử dụng, hoặc xác định các lỗi tiềm năng. Phương thức `GetFunction()` đơn giản hoá việc trích xuất tên hàm từ các nút gọi hàm, trong khi `Print()` cho phép gỡ lỗi nhanh hoặc ghi log cấu trúc của bất kỳ nút nào. Những khả năng này khiến XLParser trở thành lựa chọn lý tưởng để xây dựng công cụ chất lượng bảng tính, trợ lý tái cấu trúc và các hình ảnh giáo dục.
Duyệt qua tất cả các nút và trích xuất tên hàm
using XLParser;
var parser = new ExcelFormulaParser();
var tree = parser.Parse("SUM(A1, A2) + AVERAGE(B1:B5)");
var functions = tree.AllNodes.Where(n => n.IsFunction());
foreach (var func in functions)
{
Console.WriteLine($"Function: {func.GetFunction()}");
}Gỡ lỗi và trực quan hoá cây phân tích cú pháp
XLParser tích hợp chặt chẽ với công cụ GrammarExplorer của Irony để gỡ lỗi tương tác và hiển thị cây. Sau khi xây dựng XLParser và giải pháp GrammarExplorer, bạn có thể tải `XLParser.dll` như một ngữ pháp và kiểm tra công thức trong thời gian thực. Trong quá trình phát triển, trình gỡ lỗi của Visual Studio hỗ trợ kiểm tra các nút cây phân tích qua cửa sổ watch bằng cách sử dụng `yournode.Print(),ac`. Tính năng này tăng tốc việc hiểu các công thức phức tạp, kiểm thử các trường hợp biên và xác thực các quy tắc ngữ pháp. Cấu trúc cây gọn gàng đảm bảo ngay cả các công thức lồng nhau sâu cũng vẫn dễ đọc và quản lý. Dù bạn đang xây dựng công cụ phân tích bảng tính hay nghiên cứu hành vi công thức Excel, hỗ trợ gỡ lỗi của XLParser đơn giản hoá việc phát triển và khắc phục sự cố.
Gỡ lỗi một nút cây phân tích trong cửa sổ Watch của Visual Studio
var tree = parser.Parse("IF(A1>0, A1*2, 0)");
// In Watch window: tree.Print(),ac