STDIO
Tìm kiếm gần đây

    Nội dung

    Cấu Trúc File CSV và Cách Đọc - Ghi File CSV

    02/06/2015
    30/07/2020
    Cấu Trúc File CSV và Cách Đọc - Ghi File CSV
    File .csv là gì, cấu trúc file CSV - cách tạo, đọc ghi file csv với các trình soạn thảo. Sử dụng C# để đọc ghi file CSV.

    Giới thiệu

    CSV là định dạng file đơn giản được dùng để lưu trữ dữ liệu dạng bảng: bảng tính hoặc cơ sở dữ liệu. File nằm ở dạng CSV có thể được tạo hoặc hiển thị từ những phần mềm quản lý dữ liệu bảng như Microsoft Excel hoặc OpenOffice Calc.

    CSV là viết tắt của cụm từ “comma-seperated values” (những giá trị được ngăn cách bởi dấu phẩy). Các trường dữ liệu thường được ngăn cách nhau bởi dấu phẩy.

    Ví dụ bạn có bảng dữ liệu sau:

    Tên Tuổi Khoa Điểm thi
    Nguyễn Minh Thành 20 Khoa học máy tính 9
    Nguyễn Đức Phú 19 An ninh mạng 8

    Bảng dữ liệu trên khi được xuất sang file định dạng CSV sẽ có dạng sau:

    Nguyễn Minh Thành,20,Khoa học máy tính,9
    Nguyễn Đức Phú,19,Hệ thống thông tin,8

    Có thể thấy rằng mỗi trường dữ liệu sẽ được ngăn cách bởi dấu phẩy mà mỗi đối tượng dữ liệu sẽ được ngăn cách bằng xuống hàng (các dòng).

    File CSV là một file dữ liệu thuần, có nghĩa là nó có thể được tạo và chỉnh sửa bằng một trình văn bản (Notepad, Nodepad++, Visual Studio Code, Vim...). Tuy nhiên, CSV thường được tạo từ một bảng tính hoặc một cơ sở dữ liệu.

    Cách tạo file CSV bằng editor cơ bản

    Với Nodepad, để tạo file CSV với một trình chỉnh sửa văn bản, đầu tiên hãy mở trình chỉnh sửa văn bản để tạo tệp mới. Sau đó nhập dữ liệu vào trình chỉnh sửa văn bản với định dạng ngăn cách nhau bằng dấu phẩy và kết thúc hàng bằng cách xuống hàng.

    Title1,Title2,Title3
    one,two,three
    vidu1,vidu2,vidu3

    Sau đó lưu file với đuôi .csv. Sau đó bạn có thể mở file bằng Excel hoặc những trình bảng tính. Phần mềm sẽ tự động thể hiện bảng dữ liệu như sau:

    Title1 Title2 Title3
    one two three
    vidu1 vidu2 vidu3

    Trong file CSV được tạo ra, từng trường dữ liệu được ngăn cách bằng dấu phẩy, nhưng câu hỏi đặt ra là nếu bạn muốn giữ lại dấu phẩy đó thì nên làm như thế nào?

    Nếu một trường dữ liệu trong file CSV có chứa dấu phẩy, bạn có thể đặt toàn bộ phần dữ liệu trong dấu ngoặc kép để giữ chúng lại. Lúc này, dấu phẩy trong dấu ngoặc kép sẽ được xem là dữ liệu chứ không còn đóng vai trò vách ngăn nữa.

    Ví dụ với bảng sau:

    Sinh viên Điểm thi
    Nguyễn Minh Thành 9,8
    Nguyễn Đức Phú 7,5
    Nguyễn Huỳnh Thảo Nhi 8

    Thì file CSV sẽ có nội dung như sau:

    Sinh viên,Điểm thi
    Nguyễn Minh Thành,"8,7"
    Nguyễn Đức Phú,"7,5"
    Nguyền Huỳnh Thảo Nhi,8

    Tương tự với dấu xuống dòng và dấu ngoặc kép, nếu bạn muốn giữ chúng lại, hãy đặt chúng trong hai dấu ngoặc kép và chúng sẽ được giữ lại trong 1 field.

    Họ tên Bình luận
    Phuc Tran "Dòng 1.
    Dòng 2."
    Họ tên,Bình luận
    Phuc Tran,"Dòng 1.
    Dòng 2."

    Cấu trúc file CSV

    1. Mỗi đối tượng dữ liệu nằm trên một hàng riêng biệt, cách biệt nhau bằng dấu xuống dòng.

    data_11,data_12,data_13<xuống dòng>
    data_21,data_22,data_23

    2. Đối tượng cuối cùng của dữ liệu không cần có dấu xuống dòng.

    data_11,data_12,data_13<xuống dòng>
    data_21,data_22,data_23<không cần xuống dòng>

    3. Không cần thiết phải có một dòng đầu để chứa tên trường của dữ liệu, tuy nhiên về mặt tiện ích sử dụng, dòng này giúp bạn định nghĩa được tên trường (tên cột).

    Tên sản phẩm,Giá,Số lượng
    iPhone,15000000,1
    Android,3000000,2

    4. Số lượng trường phải bằng nhau ở mỗi hàng.

    5. Bất kỳ dấu nào - khoảng trắng, khoảng cách cũng được xem như một phần của trường dữ liệu.

    6. Kết thúc một đối tượng không nên có dấu phẩy cuối cùng.

    7. Dấu ngoặc kép phải nằm ở đầu và cuối trường dữ liệu, không nên nằm trong trường dữ liệu.

    8. Những trường dữ liệu bao gồm dấu phẩy, dấu xuống dòng phải nằm trong dấu ngoặc kép.

    9. Nếu có dấu ngoặc kép trong trường dữ liệu thì phải có dấu ngoặc kép đầu và cuối trường dữ liệu. Dấu ngoặc kép trong trường dữ liệu phải đi theo cặp.

    "Du lieu co 2 dau ""ngoac kep"" de biet la dau ngoac kep"

    Sử dụng phần mềm như Microsoft Exel, OpenOffice Calc hay Google Sheets bạn có thể tạo ra file CSV này dễ dàng, khi lưu lại bạn lựa chọn lưu trữ dưới dạng CSV. Lưu ý rằng CSV là dữ liệu dạng đơn giản nên không được có quá nhiều format đặc biệt.

    Đọc ghi file CSV với C#

    Cài đặt FileHelpers: Install-Package FileHelpers

    Product.cs

    using System;
    using FileHelpers;
    
    namespace StdioTraining
    {
        [DelimitedRecord(",")]
        [IgnoreEmptyLines()]
        [IgnoreFirst()]
        class Product
        {
            private string name;
            private string price;
    
            [FieldQuoted('"', QuoteMode.OptionalForBoth)]
            public string Name { get => name; set => name = value; }
            [FieldQuoted('"', QuoteMode.OptionalForBoth)]
            public string Price { get => price; set => price = value; }
    
            public void Show()
            {
                Console.WriteLine("Name: " + this.name + " ### Price: " + this.price);
            }
        }
    }

    Đọc file CSV

    string filePath = "D:/products.csv";
    
    var engine = new FileHelperEngine(typeof(Product));
    var products = (Product[])engine.ReadFile(filePath);
    
    for (int i = 0; i < products.Length; i++)
    {
        products[i].Show();
    }

    Ghi file CSV

    FileHelperEngine engine = new FileHelperEngine(typeof(Product));
    
    List products = new List();
    
    Product temp = new Product("iPhone 5", 3500000);
    products.Add(temp);
            
    string filename = "D:/products.csv";
    engine.HeaderText = "Name,Price";
    
    engine.WriteFile(filePath, products);

    Hoặc tải code tại đây.

    C# for Automation

    STDIO Training - Đào tạo C# Foundation & Advanced.

    Thảo luận

    Đăng nhập

    Bài viết liên quan

    Đọc Ghi File Cơ Bản Trong C#

    Đọc Ghi File Cơ Bản Trong C#

    Hướng dẫn đọc và ghi file cơ bản sử dụng đối tượng File trong C#. Nhờ có các hàm hỗ trợ nên các thao tác đọc ghi dữ liệu trên file trong C# được thực hiện một cách nhanh ...

    Bùi Trung Hiếu

    07/04/2016

    Căn Bản Về Đọc Và Ghi File Trong Ngôn Ngữ C++

    Căn Bản Về Đọc Và Ghi File Trong Ngôn Ngữ C++

    Đọc và ghi file là những kỹ thuật quan trọng và sử dụng rất nhiều trong lập trình. Hầu như không có một ứng dụng nào có giá trị sử dụng mà không sử dụng đến những kĩ ...

    Nguyễn Minh Hiếu

    22/07/2015

    Đọc Và Ghi File Trong Python

    Đọc Và Ghi File Trong Python

    Đọc và ghi file text với Python thông qua code ví dụ với các mode cơ bản và hữu ích.

    Ryan Lê

    28/03/2015

    Bitmap - Khái Niệm Và Các Xử Lý Cơ Bản

    Bitmap - Khái Niệm Và Các Xử Lý Cơ Bản

    Kiến trúc file bmp và đọc ghi file bmp bằng C/C++.

    Tran Khanh Nguyen

    13/05/2017

    Xử Lý Với File PLIST Trong Cocos2d-x 3.x.x

    Xử Lý Với File PLIST Trong Cocos2d-x 3.x.x

    Trong việc xây dựng, thiết kế project games của bạn, có nhiều tính toán, kỹ thuật, tính năng bạn phải sử dụng file để thao tác nhằm tăng hiệu suất của chương trình, giúp ...

    Lê Viết Duy

    14/06/2017

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 1: Đọc Dữ Liệu

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 1: Đọc Dữ Liệu

    Đọc và ghi dữ liệu từ các file là điều chắc chắn bạn sẽ gặp phải trong quá trình học tập và làm việc. Thông qua bài viết này tôi muốn gửi đến các bạn đọc một cách để ...

    Ryan Lê

    18/03/2015

    Đọc Ghi Tất Cả Các Định Dạng Ảnh Với FreeImage Trong C++

    Đọc Ghi Tất Cả Các Định Dạng Ảnh Với FreeImage Trong C++

    Mỗi định dạng ảnh (*.jpg, *.png, *.tga, *.bmp ...) đều có những quy chuẩn về lưu trữ của chính bản thân định dạng ảnh đó. Vì vậy, ứng với mỗi định dạng ta phải có các ...

    Vũ Quang Huy

    28/09/2014

    Xử Lý File Trong PHP

    Xử Lý File Trong PHP

    Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều không thể tránh khỏi. PHP có thể thao tác và xử lí dữ liệu thông qua quá trình nhận và đọc dữ liệu ...

    Tran Khanh Nguyen

    12/05/2017

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 2: Ghi Dữ Liệu

    Trích Xuất Dữ Liệu Từ File Excel Bằng Python - Phần 2: Ghi Dữ Liệu

    Đọc và ghi dữ liệu từ các file là điều chắc chắn bạn sẽ gặp phải trong quá trình học tập và làm việc. Thông qua bài viết này tôi muốn gửi đến các bạn đọc một cách để ...

    Ryan Lê

    18/03/2015

    Định Dạng Ảnh Bitmap - Giới Thiệu Và Các Thao Tác Cơ Bản

    Định Dạng Ảnh Bitmap - Giới Thiệu Và Các Thao Tác Cơ Bản

    Trong đời thường, bạn sẽ gặp các file ảnh có định dạng .PNG, .JPG, .TGA, .BMP,...Với những lập trình viên đặc biệt là trong lập trình games, đồ họa,... cũng sẽ phải ...

    Phan Tấn Phúc

    13/09/2017

    STDIO
    Trang chính
    Công ty TNHH STDIO

    30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
    +84 28.36205514 - +84 942.111912
    [email protected]

    383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
    Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012

    ©STDIO, 2013 - 2020