csv là gì? Những chú ý khi thao tác csv bằng excel.
Chào mọi người. Em đến từ diễn đàn tuhocvba.net, đây không phải là diễn đàn VBA đầu tiên em tham gia, nhưng là diễn đàn em được mọi người quý mến, giao cho trọng trách cùng các anh chị dịch bài.
Mọi người chắc đã quen thuộc với file csv, nhất là các anh làm bên thiết kế bên điện, các phần mềm như cabling hay là từ web xuất ra file csv rất nhiều phải không ạ?
Nếu mọi người google thì cũng thấy rằng, csv là định dạng tệp tin phổ biến để xuất dữ liệu từ nhiều dịch vụ và các chương trình quản lý khác nhau trên thế giới.
Nó có tính tương đối so với excel, chúng ta ít khi phân biệt được. Tuy nhiên khi mở nó, thực thi copy hay paste, hay thực hiện những công việc tương tự trên excel, như là lập bảng tính, thì chúng ta thấy nó thật rắc rối.
Ngay như việc mở dữ liệu cũng thấy rắc rối, mỗi người mở có khi lại cho một bảng dữ liệu hiển thị khác nhau ấy chứ.
Vậy thì chúng ta hãy bắt đầu từng bước một, trong việc tự động hóa bằng VBA để thu lấy thông tin từ file csv.
1. File csv là gì?
1.1 Chúng ta thử mở file csv.
2. Lý do chúng ta không thể dùng excel để mở file csv một cách bình thường được?
2.1 Số 0 ở đầu dãy ký tự bị biến mất.
2.2 Tự ý phán đoán dữ liệu ngày tháng và thay đổi nội dung hiển thị.
3. Tổng kết.
Đầu tiên ta đi vào mục số 1.
1. File csv là gì?
Csv là các chữ cái đầu của "Comma-Separated Values" : Giá trị phân tách bởi dấu phẩy ",".
Nói cho chùng thì csv được định nghĩa đầy đủ như sau:
Là một loại định dạng dữ liệu, các cột dữ liệu được định nghĩa phân tách bởi dấu phẩy ",".
Những phần mềm bảng tính hay là cơ sở dữ liệu có các kiểu định dạng file khác nhau. Và để trao đổi dữ liệu giữa các phần mềm khác nhau đó, người ta nghĩ ra một định dạng chung, đó là csv. Nó có thể hiển thị dưới dạng text thông thường nếu chúng ta mở nó bằng phần mềm đọc text như notepad. Chúng ta cũng có thể biên tập nó, xem dữ liệu bên trong bằng các phần mềm khác nhau, ví dụ như Excel.
Như vậy chúng ta đi đến kết luận, csv không phải là file excel, đó là một định dạng file text.
Dữ liệu được phân tách bởi dấu phẩy ",".
Bản ghi được phân cách bởi các mục (cột). Hiểu như là một dòng trên bảng tính excel, nhưng còn được phân cách bởi các cột.
Và cuối cùng, nó là loại dữ liệu để các phần mềm trao đổi thông tin với nhau.
1.1 Thử mở file csv
Chúng ta thử mở một file csv sẽ thấy chúng có rất nhiều bản ghi (dòng dữ liệu), các dữ liệu được phân tách bởi dấu phẩy ",".
Bạn cần đăng nhập để thấy hình ảnh
Nếu chúng ta mở bằng excel với thiết định phân tách dấu phẩy, chúng ta sẽ thấy nó là các cột dữ liệu.
Bạn cần đăng nhập để thấy hình ảnh
2.Lý do chúng ta không thể mở file csv bằng excel một cách thông thường
Ví dụ như double click file csv. Hoặc là mở excel lên rồi kéo file csv vào, rất có thể sẽ xảy ra lỗi ngoài ý muốn.
Nào, bây giờ chúng ta thử code sau, khá giống code của anh
Snow24.
Sub openCSV()
Workbooks.Open "C:\tuhocvba.net\file01.csv"
End Sub
Tất nhiên việc mở này là có thể được. Nó giống hoàn toàn với thao tác bằng tay, double click file csv. Và tất nhiên cũng có trường hợp không mong muốn xảy ra, lỗi hiển thị như của anh
Euler.
2.1 Mất số 0 ở đầu
Chúng ta cùng nhìn dữ liệu dưới đây, chúng đều có số 0 ở đầu.
Bạn cần đăng nhập để thấy hình ảnh
Các bản ghi (dòng dữ liệu) đều bắt đầu bằng các số như là 001,002,003,...
Và bây giờ mở bằng excel nhé:
Bạn cần đăng nhập để thấy hình ảnh
Chúng ta thấy số 0 ở đầu đã bị biến mất như hình minh họa trên.
Chưa hết đâu, còn một cái tội to đùng, là tự ý phán đoán, tự tiện thay đổi dữ liệu hiển thị.
2.2 Tự ý phán đoán ngày tháng và hiển thị
Hãy nhìn cột dữ liệu khoanh đỏ dưới đây, chúng được ghi như là 01-01, 01-02,...
Bạn cần đăng nhập để thấy hình ảnh
Và khi mở bằng excel thì hiển thị thành ngày tháng như thế này đây.
Anh chị dùng VBA thì dùng Workbook.Open là thấy ngay nhé:
Bạn cần đăng nhập để thấy hình ảnh
3.Tổng kết
Có thể sử dụng VBA để mở file csv thu lấy thông tin từ nó. Việc này chúng ta sẽ bàn sau.
Trên đây đã liệt kê hàng loạt chú ý để mọi người cẩn thận khi xử lý dữ liệu csv.
Chú ý: Bài viết này đúng ra là được đăng trước bài trên của anh
Euler.
Nhưng do em dịch chậm, nên đăng muộn. Cả nhà thông cảm nhé.
Nguồn (Phần 1):
Bạn cần đăng nhập để thấy link