#share: Chuyển một tài liệu Excel sang dạng JSON với C# và ExcelDataReader

read excel file into dataset in asp.net using C#

ExcelDataReader là gì?

Đây là thư viện rất nhẹ và nhanh được viết bằng C# nhằm thao tác với các tập tin Microsoft Excel.
Với khả năng hỗ trợ nhiều định dạng và các phiên bản khác nhau, ExcelDataReader được nhiều lập trình viên ưu tiên sử dụng.

File TypeContainer FormatFile FormatExcel Version(s)
.xlsxZIP, CFB+ZIPOpenXml2007 and newer
.xlsCFBBIFF897, 2000, XP, 2003
98, 2001, v.X, 2004 (Mac)
.xlsCFBBIFF55.0, 95
.xlsBIFF44.0
.xlsBIFF33.0
.xlsBIFF22.0, 2.2
.csvCSV(All)

Cài đặt ExcelDataReader

Anh em có thể cài đặt ExcelDataReader bằng cách sử dụng NuGet thông qua VS Package Manager Console Install-Package <package>hoặc sử dụng VS “Manage NuGet Packages…” extension.

Phiên bản ExcelDataReader 3.0 được chia thành hai gói:

Gói cài đặt ExcelDataReader là gói sử dụng ở mức cơ bản. Tương thích với net20, net45, netstandard1.3 and netstandard2.0.

Gói cài đặt ExcelDataReader.DataSet là gói mở rộng sử dụng phương thức AsDataSet() thông qua System.Data.DataSet. Tương thích với net20, net45 and netstandard2.0.

Sử dụng ExcelDataReader cơ bản

Nếu anh em cần thao tác với tập tin .CSV thì sử dụng ExcelReaderFactory.CreateCsvReader thay vì ExcelReaderFactory.CreateReader ở dòng số 6.

Mọi thông tin chi tiết thêm về cấu hình và cách sử dụng ExcelDataReader anh em tham khảo ở đây

Convert an Excel Worksheet to JSON document

Phần bên trên là kiến thức cơ bản. Tiếp theo chúng ta sẽ đi convert một tập tin Excel sang dạng JSON bằng ExcelDataReader.

Có một vài trường hợp khi build đoạn mã này gặp lỗi System.NotSupportedException: No data is available for encoding 1252. thì bạn có thể xử lý như sau:

A few gotchas that surprised me. I got a “System.NotSupportedException: No data is available for encoding 1252.” Windows-1252 or CP-1252 (code page) is an old school text encoding (it’s effectively ISO 8859-1). Turns out newer .NETs like .NET Core need the System.Text.Encoding.CodePages package as well as a call to System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); to set it up for success.

hanselman.com

Kết quả dạng JSON của chúng ta sẽ trông như thế này:

Kết luận

Có rất nhiều cách để convert một tập tin Excel sang dạng JSON. Tuy nhiên với đoạn code đơn giản trên hy vọng giúp ích cho anh em.

Bài viết tham khảo từ hanselman

Chúc anh em vui vẻ!

Nguyễn Trung Hiếu

Một blogger ... cùi bắp! Đơn giản: tôi muốn ghi lại những gì xảy ra xung quanh, cả công việc lẫn cuộc sống và chia sẻ với các bạn đọc. Nếu bạn cảm thấy bài viết có nhiều điểm không chính xác, hãy comment và chia sẻ để tôi còn được học hỏi từ những góp ý của bạn. Email: hieunt.dcn@gmail.com