Bài toán này thì với
@NhanSu sẽ có nhiều kinh nghiệm xử lý bằng ADO.
Đối với office 2019, đọc file csv này không có vấn đề gì, nhưng với office đời cũ hơn chắc sẽ có vấn đề về hiển thị dữ liệu.
Đối với việc trích xuất csv, lựa chọn tốt nhất có lẽ là ADO. Nếu thuần thục cấu trúc lệnh SQL thì chắc sẽ có lời giải đẹp. Nhưng với dữ liệu thời khóa biểu này, số lượng dòng dữ liệu khó có thể lên tới chục ngàn, nên Euler nghĩ có thể đọc thuần túy ra mảng rồi dùng Dictionary xử lý tiếp.
Về ADO sẽ có hai hướng là ADO stream. Hướng này nhiều tài liệu hướng dẫn xử lý đọc UTF-8.
Nhưng nếu đi theo hướng ADO recordset, thì sẽ ít tài liệu hơn. Euler sẽ lựa chọn hướng đi này để có thêm kinh nghiệm.
Nếu xử lý theo đúng giáo trình thì đọc ra cái output như này:
Bạn cần đăng nhập để thấy hình ảnh
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & TARGET_FOLDER & ";" _
& "Extended Properties=""Text;" _
& "HDR=No;" _
& "FMT=Delimited"""
Nguồn:
Bạn cần đăng nhập để thấy link
Euler sửa code thành:
"FMT=Delimited;CharacterSet=65001'"""
Kết quả vẫn vậy, hiển thị vẫn tùm lum.
Xóa dấu nháy đơn ở cuối đi coi sao:
"FMT=Delimited;CharacterSet=65001"""
Chạy code coi xem đọc csv ra gì nào:
Bạn cần đăng nhập để thấy hình ảnh
Kết quả đã đẹp rồi.
Tham khảo:
[filename.csv] <---- 読み込むCSVファイル名を[ ]で括る
Format=CSVDelimited <---- フォーマット形式指定
CharacterSet=65001 <---- 文字コードをUTF-8(65001)に指定
MaxScanRows=0 <---- 読み込む行数を制限(0は制限なし)
ColNameHeader=True <---- 1行目をフィールド名とする
Nguồn:
Bạn cần đăng nhập để thấy link