Microsoft Excel là nhà vô địch không thể tranh cãi của thế giới kinh doanh, cung cấp khả năng tuyệt vời cho mọi ngành và cung cấp thông tin cho những người ra quyết định ở cấp cao nhất trong cấu trúc công ty.
Là một nhà phát triển, nó không phải là một vấn đề khi chúng ta làm việc với các bảng tính Excel. Bài viết này sẽ giới thiệu cách đơn giản nhất mà tôi đã tìm thấy để đọc và ghi file Excel bằng C# sử dụng ExcelMapper.
ExcelMapper là một gói .NET OSS được MIT cấp phép cho phép chúng ta đọc và ghi các file Excel bằng cách sử dụng “Đối tượng C# cũ (POCO)” .
Thư viện hoạt động đa nền tảng bằng cách sử dụng thư viện NPOI thay vì sử dụng công cụ cơ sở dữ liệu Jet được tìm thấy độc quyền trên các thiết bị Windows.
Những người quen thuộc với các thư viện truy cập dữ liệu khác sẽ thấy việc sử dụng ExcelMapper gợi nhớ đến các thư viện như Entity Framework Core hoặc Dapper.
Người dùng cũng có thể làm việc với các đối tượng và bản ghi động (dynamic objects and records), cho phép họ sử dụng các tính năng vượt trội trong .NET. ExcelMapper cũng hỗ trợ các khái niệm trong Excel như công thức (formular), định dạng (format) và trang tính (sheet).
Giả sử chúng ta có một file Excel chứa dữ liệu về phim. Cột tiêu đề bao gồm giá trị như Id
, Name
và StreamingService
. ExcelMapper có thể tạo ánh xạ động dựa trên các cột của chúng ta, vì vậy chúng ta chỉ cần tạo một bản ghi phù hợp với tên cột của chúng ta.
public record Movie(
int Id,
string Name,
string StreamingService
);
Bước tiếp theo là tạo một thể hiện của ExcelMapper
và sau đó gọi phương thức FetchAsync
với kiểu record của chúng ta.
const string excelFile = "Movies.xlsx";
var excel = new ExcelMapper();
var movies = (await excel.FetchAsync<Movie>(excelFile)).ToList();
Bây giờ chúng ta có thể sử dụng đối tượng movies
của chúng ta trong một vòng lặp foreach
.
foreach (var movie in movies)
{
Console.WriteLine(movie);
}
Chạy ứng dụng của chúng ta lên, chúng ta có thể thấy kết quả trong đầu ra console như sau.
Movie { Id = 2, Name = Ted, StreamingService = netflix }
Movie { Id = 5, Name = The Giver, StreamingService = netflix }
Movie { Id = 12, Name = Underworld: Awakening, StreamingService = netflix }
Movie { Id = 17, Name = The Boondock Saints, StreamingService = netflix }
Movie { Id = 24, Name = The Princess and the Frog, StreamingService = netflix }
Movie { Id = 30, Name = Let's Be Cops, StreamingService = netflix }
Movie { Id = 31, Name = We're the Millers, StreamingService = netflix }
Movie { Id = 34, Name = Saw III, StreamingService = netflix }
Movie { Id = 35, Name = The Imitation Game, StreamingService = netflix }
Movie { Id = 38, Name = Transformers: Age of Extinction, StreamingService = netflix }
Giống như đọc từ file Excel, trước tiên chúng ta cần tạo một thể hiện của ExcelMapper
. Hãy lấy ví dụ đầu tiên của chúng ta, thay đổi giá trị của cột StreamingService
và sau đó ghi nó vào một trang tính mới có nhãn disney+
. Vì chúng ta đang sử dụng record trong C# 9, chúng ta có thể sử dụng từ khóa with
để tạo các bản sao trùng lặp.
using System;
using System.Collections.Generic;
using System.Linq;
using Ganss.Excel;
const string excelFile = "Movies.xlsx";
var excel = new ExcelMapper();
var movies = (await excel.FetchAsync<Movie>(excelFile)).ToList();
var purchasedByDisney = new List<Movie>();
const string disney = "disney+";
foreach (var movie in movies)
{
Console.WriteLine(movie);
purchasedByDisney.Add(movie with
{
StreamingService = disney
});
}
await excel.SaveAsync(
excelFile,
purchasedByDisney,
sheetName: disney
);
public record Movie(
int Id,
string Name,
string StreamingService
);
Sau khi chạy chương trình của chúng ta, mở file excel lên chúng ta có thể thấ một trang tính mới được gắn nhãn disney+
như hình dưới đây.
Wow, nó không dễ dàng hơn thế!
ExcelMapper cho phép các nhà phát triển .NET tập trung vào dữ liệu trong khi vẫn cấp cho họ quyền truy cập vào các tính năng khiến Excel trở thành một công cụ đa năng tuyệt vời.
Đọc dữ liệu từ file excel và chuyển nó thành các đối tượng POCO, thao tác với các dòng và ghi dữ liệu đó trở lại theo bất kỳ cách nào bạn muốn.
Trong một vài dòng của C# 9, chúng ta có thể làm tất cả những gì chúng ta muốn với nỗ lực tối thiểu. Điều đó sẽ giữ cho những người kinh doanh trong cuộc sống của chúng ta hạnh phúc hơn nhiều.
Cảm ơn đã đọc, và vui lòng để lại bình luận bên dưới.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong loạt bài này, tôi sẽ xem xét một số
Ngôn ngữ C# đã bật các bộ tăng áp liên
Trong bài viết này, chúng ta sẽ tìm hiểu lớp tiện ích ZipFile trong C#, cách nén tập tin và thư mục, cùng với giải nén tập tin zip.
Bài viết này sẽ giúp bạn tìm hiểu PriorityQueue của .NET 6 là gì, cách chúng ta thêm các phần tử và cách chúng ta có thể xếp hàng lại cho các phần tử.