Export Excel Data To Csv: Hướng Dẫn Chi Tiết Từ A Đến Z

Mục lục bài viết

Mở đầu

Trong môi trường làm việc hiện đại, việc chia sẻ và xử lý dữ liệu giữa các hệ thống khác nhau là một nhu cầu thiết yếu. Microsoft Excel là công cụ phổ biến nhất để tạo, chỉnh sửa và phân tích dữ liệu dạng bảng, trong khi định dạng CSV (Comma Separated Values) lại là chuẩn mở, nhẹ, dễ dàng được hầu hết các phần mềm và ngôn ngữ lập trình hỗ trợ. Vì vậy, việc export Excel data to CSV (xuất dữ liệu Excel sang CSV) trở thành một kỹ năng quan trọng đối với người dùng văn phòng, nhà phân tích dữ liệu, lập trình viên và các nhà quản lý.

Bài viết này sẽ cung cấp cho bạn một hướng dẫn toàn diện, chi tiết và thực tế về cách chuyển đổi dữ liệu từ Excel sang CSV, bao gồm:

  1. Kiến thức cơ bản về định dạng CSV và sự khác biệt so với Excel.
  2. Các phương pháp export trong Excel (sử dụng giao diện, macro VBA, Power Query, Power Automate, và các công cụ dòng lệnh).
  3. Xử lý vấn đề thường gặp: mã hoá ký tự, dấu phân cách, dữ liệu ngày tháng, số liệu lớn, công thức, định dạng.
  4. Tự động hoá quy trình bằng script Python, PowerShell và các công cụ ETL.
  5. Kiểm tra và xác thực file CSV sau khi xuất.
  6. Các lưu ý bảo mật và hiệu suất khi làm việc với dữ liệu nhạy cảm hoặc khối lượng lớn.

Hãy cùng đi sâu vào từng phần để nắm vững toàn bộ quy trình và tối ưu hoá công việc của mình.

1. Hiểu về CSV và Excel: Khái Niệm Cơ Bản

1.1 CSV là gì?

CSV (Comma Separated Values) là một định dạng văn bản đơn giản, trong đó mỗi dòng đại diện cho một bản ghi và các trường dữ liệu được ngăn cách nhau bằng một ký tự phân cách (mặc định là dấu phẩy ,). Đặc điểm nổi bật:

  • Độc lập nền tảng: có thể mở bằng bất kỳ trình soạn thảo văn bản nào (Notepad, VS Code) và hầu hết các hệ thống quản lý dữ liệu (MySQL, PostgreSQL, MongoDB, Hadoop) đều hỗ trợ nhập CSV.
  • Kích thước nhỏ: không chứa định dạng, biểu đồ, công thức, hình ảnh…
  • Dễ đọc và viết: phù hợp cho việc trao đổi dữ liệu qua API, batch processing, hoặc lưu trữ tạm thời.

1.2 Excel là gì?

Microsoft Excel là một ứng dụng bảng tính mạnh mẽ, hỗ trợ:

  • Định dạng đa dạng: màu nền, font, viền, công thức, macro, biểu đồ…
  • Lưu trữ dữ liệu dưới dạng file .xlsx (OpenXML) hoặc .xls (binary) – chứa cấu trúc phức tạp.
  • Hỗ trợ tính toán động: công thức, pivot table, data validation…

1.3 Sự khác biệt chính

Tiêu chíCSVExcel (.xlsx)
Định dạngVăn bản thuần (plain text)XML nén (ZIP)
Phân cáchDấu phân cách (thường là ,)Ô, hàng, cột được xác định bởi cấu trúc XML
Hỗ trợ công thứcKhôngCó
Định dạng ôKhôngCó
Kích thướcNhỏLớn hơn do chứa metadata
Tính di độngRất caoCần phần mềm hỗ trợ (Excel, LibreOffice, Google Sheets)

Hiểu rõ những khác biệt này giúp bạn quyết định khi nào nên xuất sang CSV và cách xử lý dữ liệu sao cho không mất mát thông tin quan trọng.

2. Các Cách Export Excel Data to CSV

2.1 Phương pháp 1: Sử dụng giao diện Excel (Save As)

Đây là cách đơn giản nhất, phù hợp cho người dùng không rành về lập trình.

Bước thực hiện (Excel 2026 trở lên)

  1. Mở file Excel cần xuất.
  2. Chọn Sheet muốn lưu (chỉ một sheet được lưu trong một file CSV).
  3. Vào File → Save As.
  4. Chọn Folder lưu, trong mục Save as type chọn CSV (Comma delimited) (.csv).
  5. Nhấn Save.
  6. Nếu có nhiều sheet, Excel sẽ cảnh báo: “Only the active sheet will be saved in the CSV file”. Nhấp OK.
  7. Nếu có dữ liệu không phải dạng text (ví dụ: công thức), Excel sẽ hỏi “Do you want to keep using that format?”. Chọn Yes để lưu giá trị tính toán hiện tại.

Lưu ý quan trọng

  • Mã hoá ký tự: Mặc định Excel lưu CSV dưới dạng UTF-8 (trong các phiên bản mới) hoặc ANSI (trong các phiên bản cũ). Nếu dữ liệu có ký tự Unicode (tiếng Việt, tiếng Trung…), cần kiểm tra file sau khi lưu.
  • Dấu phân cách: Ở một số quốc gia, mặc định Excel sử dụng dấu chấm phẩy ; thay vì dấu phẩy ,. Bạn có thể thay đổi trong Control Panel → Region → Additional Settings → List separator.
  • Ngày tháng: Excel sẽ xuất ngày tháng theo định dạng của hệ thống (ví dụ: dd/mm/yyyy hoặc mm/dd/yyyy). Khi nhập lại, cần chú ý định dạng phù hợp.

2.2 Phương pháp 2: Export qua VBA Macro

Khi cần xuất nhiều sheet, hoặc tự động hoá quy trình, VBA (Visual Basic for Applications) là công cụ mạnh mẽ.

2.2.1 Mẫu macro xuất một sheet sang CSV

Sub ExportActiveSheetToCSV() Dim ws As Worksheet Dim csvPath As String Set ws = ActiveSheet csvPath = ThisWorkbook.Path & "\" & ws.Name & ".csv" ws.Copy With ActiveWorkbook .SaveAs Filename:=csvPath, FileFormat:=xlCSVUTF8, CreateBackup:=False .Close SaveChanges:=False End With MsgBox "Sheet '" & ws.Name & "' đã được lưu dưới dạng CSV tại:" & vbCrLf & csvPath
End Sub

2.2.2 Mẫu macro xuất tất cả sheet vào các file CSV riêng

Sub ExportAllSheetsToCSV() Dim ws As Worksheet Dim csvPath As String For Each ws In ThisWorkbook.Worksheets csvPath = ThisWorkbook.Path & "\" & ws.Name & ".csv" ws.Copy With ActiveWorkbook .SaveAs Filename:=csvPath, FileFormat:=xlCSVUTF8, CreateBackup:=False .Close SaveChanges:=False End With Next ws MsgBox "Tất cả các sheet đã được xuất thành CSV."
End Sub

2.2.3 Tùy chỉnh dấu phân cách và mã hoá

  • Để đổi dấu phân cách thành ;, thay FileFormat:=xlCSVUTF8 bằng FileFormat:=xlCSV và thiết lập Regional Settings trong Windows.
  • Đối với mã hoá UTF-8: xlCSVUTF8 (Excel 2026+). Trong các phiên bản cũ, bạn có thể xuất dưới dạng xlCSV và sau đó dùng Notepad++ chuyển mã.

2.2.4 Khi nào nên dùng VBA?

  • Khi cần lặp lại quy trình xuất hàng ngày/tuần.
  • Khi có nhiều sheet và muốn tự động tạo file.
  • Khi cần xử lý dữ liệu trước khi xuất (lọc, chuyển đổi, ẩn cột).

2.3 Phương pháp 3: Power Query (Get & Transform)

Power Query là công cụ ETL (Extract, Transform, Load) tích hợp trong Excel, cho phép trích xuất dữ liệu, làm sạch và xuất ra nhiều định dạng.

2.3.1 Các bước xuất CSV bằng Power Query

  1. Mở Power Query: Data → Get Data → From Other Sources → Blank Query.
  2. Nhập dữ liệu: Trong cửa sổ Advanced Editor, viết:

m let Source = Excel.CurrentWorkbook(){Name="Table1"}Content in Source

(Giả sử dữ liệu đã được chuyển thành Table có tên Table1).

  1. Thực hiện các bước chuyển đổi nếu cần (loại bỏ cột, thay đổi kiểu dữ liệu…).
  2. Load to: Home → Close & Load → Load To → Only Create Connection.
  3. Export: Trong Queries & Connections, chuột phải query → Export → CSV → Chọn thư mục và tên file.

2.3.2 Ưu điểm

  • Xử lý dữ liệu linh hoạt: lọc, nhóm, tính toán.
  • Tái sử dụng: Query có thể được refresh tự động.
  • Không cần VBA: Thân thiện với người không lập trình.

2.4 Phương pháp 4: Power Automate (Flow)

Power Automate (trước đây là Microsoft Flow) cho phép tạo workflow tự động trên đám mây, hỗ trợ xuất file Excel (được lưu trên OneDrive/SharePoint) sang CSV và gửi email hoặc lưu vào các thư mục khác.

2.4.1 Tạo Flow cơ bản

  1. Trigger: “When a file is created or modified (OneDrive for Business)”.
  2. Action: “List rows present in a table” (Excel Online (Business)).
  3. Compose: Dùng “Create CSV table” để chuyển danh sách thành CSV.
  4. Create file: Lưu file CSV vào OneDrive/SharePoint hoặc gửi email.

2.4.2 Khi nào nên dùng Power Automate?

  • Khi dữ liệu nằm trên đám mây và cần đồng bộ tự động.
  • Khi cần thông báo (email, Teams) sau khi export.
  • Khi công việc liên quan đến nhiều hệ thống (SQL, SharePoint, Google Sheets).

2.5 Phương pháp 5: Sử dụng công cụ dòng lệnh (Command Line)

2.5.1 LibreOffice / OpenOffice soffice CLI

LibreOffice có thể chuyển đổi file .xlsx sang .csv bằng lệnh:

soffice --headless --convert-to csv:"Text - txt - csv (StarCalc)":44,34,76,1 --outdir /path/to/output file.xlsx
  • 44: ký tự phân cách (44 = ,).
  • 34: ký tự bao quanh (34 = ").
  • 76: mã hoá (76 = UTF-8).
  • 1: bỏ qua dòng tiêu đề (0 = giữ lại).

2.5.2 Python pandas

Python là công cụ mạnh cho xử lý dữ liệu lớn.

import pandas as pd # Đọc file Excel
df = pd.read_excel('data.xlsx', sheet_name='Sheet1') # Lưu dưới dạng CSV
df.to_csv('data.csv', index=False, encoding='utf-8')

Bạn có thể lặp qua nhiều sheet:

excel_file = pd.ExcelFile('data.xlsx')
for sheet in excel_file.sheet_names: df = excel_file.parse(sheet) df.to_csv(f'{sheet}.csv', index=False, encoding='utf-8')

2.5.3 PowerShell

PowerShell có thể dùng Import-Excel (module ImportExcel) để xuất CSV.

Import-Module ImportExcel
$excelPath = "C:\Data\report.xlsx"
$sheetNames = (Get-ExcelSheetInfo -Path $excelPath).Name foreach ($sheet in $sheetNames) { $data = Import-Excel -Path $excelPath -WorksheetName $sheet $csvPath = "C:\Data\$sheet.csv" $data | Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8
}

3. Xử Lý Các Vấn Đề Thường Gặp Khi Export

3.1 Mã hoá ký tự (Encoding)

  • UTF-8: Được khuyến nghị cho đa ngôn ngữ, hỗ trợ BOM (Byte Order Mark) để các phần mềm nhận biết.
  • ANSI (Windows-1252): Chỉ hỗ trợ tiếng Anh và một số ký tự châu Âu, dễ gặp lỗi “????” khi mở bằng Notepad.
  • UTF-16: Đôi khi Excel xuất ra khi dùng FileFormat:=xlCSV. Không phải mọi hệ thống đều hỗ trợ.

Cách kiểm tra: Mở file CSV bằng Notepad++ → Encoding menu → xem hiện tại.

3.2 Dấu phân cách (Delimiter)

  • Dấu phẩy , là chuẩn quốc tế.
  • Dấu chấm phẩy ; thường dùng ở Châu Âu, nơi dấu phẩy được dùng làm thập phân.
  • Tab \t: Định dạng TSV (Tab Separated Values), hữu ích khi dữ liệu có chứa dấu phẩy.

Bạn có thể tùy chỉnh trong Excel (Regional Settings) hoặc trong script (pandas sep=';').

3.3 Dữ liệu ngày tháng

Excel lưu ngày tháng dưới dạng số serial (1 = 1/1/1900). Khi xuất sang CSV, Excel chuyển sang chuỗi dựa trên định dạng hiện tại.

Export Excel Data To Csv
Export Excel Data To Csv

Giải pháp:

  • Thiết lập định dạng: Trước khi export, chọn cột ngày → Format Cells → Custom → yyyy-mm-dd. Khi mở CSV, ngày sẽ hiển thị đúng chuẩn ISO.
  • Trong pandas: df'date' = pd.to_datetime(df'date').dt.strftime('%Y-%m-%d').

3.4 Số liệu lớn và định dạng khoa học

Excel có xu hướng hiển thị số lớn dưới dạng khoa học (e.g., 1.23E+08). Khi export, giá trị sẽ giữ dạng này, gây khó khăn khi nhập lại.

Cách khắc phục:

  • Định dạng cột: Set Number → Number (không dấu thập phân) hoặc Text.
  • Trong VBA: ws.Columns("A").NumberFormat = "0" trước khi export.
  • Trong pandas: df'big_number' = df'big_number'.astype(str).

3.5 Công thức và dữ liệu ẩn

CSV chỉ lưu giá trị đã tính, không có công thức. Nếu bạn muốn lưu công thức, cần xuất dưới dạng Excel hoặc lưu công thức trong một cột phụ.

3.6 Dòng tiêu đề (Header)

  • Có tiêu đề: Đặt header=True trong pandas (to_csv mặc định có tiêu đề).
  • Không tiêu đề: header=False.

3.7 Dòng trống và dữ liệu NULL

CSV không có khái niệm NULL; thường để trống giữa hai dấu phân cách: value1,,value3. Khi nhập lại, các công cụ sẽ hiểu là rỗng hoặc NULL tùy cấu hình.

4. Tự Động Hóa Quy Trình Export Với Python

4.1 Kiến trúc tổng quan

  1. Đọc file Excel (có thể là .xlsx hoặc .xlsb).
  2. Xử lý dữ liệu: lọc, chuẩn hoá, chuyển đổi kiểu.
  3. Ghi ra CSV: một file chung hoặc nhiều file tùy sheet.
  4. Lưu trữ / chuyển giao: gửi email, upload lên S3, lưu vào database.

4.2 Mẫu script đầy đủ

import pandas as pd
import os
import smtplib
from email.message import EmailMessage # ------------------- Cấu hình -------------------
EXCEL_PATH = r'C:\Data\source.xlsx'
OUTPUT_DIR = r'C:\Data\csv_output'
EMAIL_SENDER = 'you@example.com'
EMAIL_RECEIVER = 'team@example.com'
SMTP_SERVER = 'smtp.example.com'
SMTP_PORT = 587
SMTP_USER = 'you@example.com'
SMTP_PASSWORD = 'yourpassword'
# ------------------------------------------------ def ensure_dir(path): if not os.path.exists(path): os.makedirs(path) def export_excel_to_csv(excel_path, out_dir): ensure_dir(out_dir) xl = pd.ExcelFile(excel_path) created_files = for sheet in xl.sheet_names: df = xl.parse(sheet) # Xử lý ví dụ: chuyển cột ngày sang ISO for col in df.select_dtypes(include='datetime'): dfcol = dfcol.dt.strftime('%Y-%m-%d') # Loại bỏ cột rỗng df.dropna(axis=1, how='all', inplace=True) csv_path = os.path.join(out_dir, f'{sheet}.csv') df.to_csv(csv_path, index=False, encoding='utf-8') created_files.append(csv_path) return created_files def send_email_with_attachments(files): msg = EmailMessage() msg'Subject' = 'Export CSV từ Excel hoàn thành' msg'From' = EMAIL_SENDER msg'To' = EMAIL_RECEIVER msg.set_content('Xin vui lòng kiểm tra các file CSV đính kèm.') for f in files: with open(f, 'rb') as fp: data = fp.read() name = os.path.basename(f) msg.add_attachment(data, maintype='text', subtype='csv', filename=name) with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server: server.starttls() server.login(SMTP_USER, SMTP_PASSWORD) server.send_message(msg) if __name__ == '__main__': csv_files = export_excel_to_csv(EXCEL_PATH, OUTPUT_DIR) send_email_with_attachments(csv_files) print('Hoàn thành! Các file CSV đã được gửi email.')

Giải thích:

  • ensure_dir: Tạo thư mục nếu chưa tồn tại.
  • export_excel_to_csv: Lặp qua mọi sheet, chuẩn hoá ngày, loại bỏ cột rỗng, lưu CSV.
  • send_email_with_attachments: Gửi email kèm file CSV.
  • if __name__ == '__main__': Chạy script.

Bạn có thể mở rộng: thêm logging, kiểm tra checksum, hoặc upload lên AWS S3.

4.3 Triển khai trên môi trường cron / Task Scheduler

  • Linux: Thêm vào crontab 0 2 /usr/bin/python3 /path/to/script.py.
  • Windows: Tạo Task trong Task Scheduler, trigger hàng ngày.

5. Kiểm Tra và Xác Thực File CSV

Sau khi xuất, việc kiểm tra chất lượng là không thể bỏ qua.

5.1 Kiểm tra cấu trúc

  • Số cột đồng nhất: Mở file bằng csvkit (csvstat file.csv) để xem số cột trung bình.
  • Kiểm tra ký tự đặc biệt: grep -P '^\x00-\x7F' file.csv để tìm ký tự không ASCII.

5.2 Kiểm tra dữ liệu

  • Độ dài dòng: awk -F',' '{print NF}' file.csv | sort | uniq -c – kiểm tra các dòng có số cột khác nhau.
  • Kiểm tra ngày tháng: grep -E '(0-30-9/0-10-9/0-9{4})' file.csv để phát hiện định dạng không chuẩn.

5.3 Kiểm tra so sánh với Excel

  • Sử dụng pandas để đọc lại CSV và so sánh với DataFrame gốc:
df_excel = pd.read_excel(EXCEL_PATH, sheet_name='Sheet1')
df_csv = pd.read_csv('Sheet1.csv')
assert df_excel.equals(df_csv), "Dữ liệu không khớp!"

Nếu có lỗi, rà soát lại các bước xử lý (định dạng, phân cách, mã hoá).

6. Bảo Mật và Hiệu Suất Khi Export Dữ Liệu Lớn

6.1 Bảo mật

  • Mã hoá file: Khi dữ liệu nhạy cảm, sử dụng zipfile với password hoặc gpg để mã hoá CSV trước khi truyền.
  • Tránh lưu trữ tạm thời: Nếu sử dụng script, xóa file tạm sau khi gửi.
  • Quyền truy cập: Đảm bảo thư mục lưu CSV có quyền chỉ đọc/ghi cho người dùng cần thiết.

6.2 Hiệu suất

  • Kích thước file lớn (>100MB): Sử dụng chunksize trong pandas:
for chunk in pd.read_excel(EXCEL_PATH, sheet_name='LargeSheet', chunksize=50000): chunk.to_csv('LargeSheet.csv', mode='a', header=not os.path.exists('LargeSheet.csv'), index=False)
  • Sử dụng openpyxl hoặc xlrd: Đối với file .xlsb (binary), dùng pyxlsb để đọc nhanh hơn.
  • Tối ưu hoá VBA: Tắt ScreenUpdating và Calculation trong macro để giảm thời gian:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'... code export ...
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

7. Tổng Kết và Các Bước Thực Hiện Nhanh

BướcPhương phápKhi nào dùngLưu ý chính
1. Xác định nhu cầu–Đánh giá khối lượng, tần suất, độ phức tạp–
2. Chọn công cụGiao diện, VBA, Power Query, Power Automate, CLI, PythonDựa vào kỹ năng và môi trườngKiểm tra mã hoá, dấu phân cách
3. Chuẩn hoá dữ liệuĐịnh dạng ngày, số, textTrước khi exportĐặt định dạng trong Excel hoặc script
4. Thực hiện export–Sử dụng công cụ đã chọnKiểm tra cảnh báo (có nhiều sheet, công thức)
5. Kiểm tra file CSVNotepad++, csvkit, pandasĐảm bảo số cột, ký tự, ngày thángSo sánh với nguồn
6. Bảo mật & lưu trữMã hoá, quyền truy cậpKhi dữ liệu nhạy cảmXóa file tạm thời
7. Tự động hoá (nếu cần)VBA, Power Automate, Python, cronĐịnh kỳ, batch processingGhi log, thông báo lỗi

8. Một số mẹo nâng cao

  1. Sử dụng Text to Columns trong Excel để kiểm tra nhanh cách dữ liệu sẽ được tách khi xuất.
  2. Đặt CSV làm default file type trong Windows Explorer (đối với các dự án thường xuyên).
  3. Sử dụng Data Validation để ngăn người dùng nhập ký tự không hợp lệ (ví dụ: dấu , trong ô).
  4. Kiểm tra Locale: Đối với môi trường đa quốc gia, luôn xác định Locale trước khi export để tránh sai dấu thập phân.
  5. Ghi log trong VBA hoặc script: Lưu thời gian, tên file, số dòng để dễ dàng audit.

9. Kết luận

Việc export Excel data to CSV không chỉ là một thao tác đơn giản mà còn là một chuỗi quy trình đòi hỏi sự hiểu biết về định dạng, mã hoá, và cách xử lý dữ liệu. Từ việc sử dụng giao diện Excel cơ bản, đến viết macro VBA, tận dụng Power Query, tự động hoá bằng Power Automate, hay lập trình với Python và PowerShell, mỗi công cụ đều có ưu và nhược điểm riêng, phù hợp với các trường hợp sử dụng khác nhau.

Bằng cách nắm vững:

  • Kiến thức nền tảng về CSV và Excel,
  • Các phương pháp export đa dạng,
  • Cách xử lý vấn đề như mã hoá, dấu phân cách, ngày tháng, số lớn,
  • Kỹ thuật tự động hoá và kiểm tra chất lượng,

bạn sẽ có thể biến công việc xuất dữ liệu trở nên nhanh chóng, chính xác và an toàn, đồng thời giảm thiểu lỗi và tối ưu hoá quy trình làm việc. Hãy áp dụng những hướng dẫn trên vào dự án thực tế của mình và chia sẻ kinh nghiệm để cộng đồng cùng tiến bộ.

Chúc bạn thành công trong mọi nhiệm vụ export Excel data to CSV!

⚠️
LƯU Ý QUAN TRỌNG: Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.

Viết một bình luận