TL;DR: Các giải pháp khắc phục nhanh
Nếu bạn đang vội, hãy thử các bước sau theo thứ tự:
- Sửa lỗi trực tiếp (Native Repair): Mở Excel →
File→Open→Browse→ Chọn tệp → Nhấp vào mũi tên bên cạnhOpen→ Open and Repair. - Lưu dưới định dạng khác: Nếu tệp mở được sau khi sửa lỗi, hãy lưu ngay dưới dạng
.xlsb(Binary) hoặc.csvđể loại bỏ các dữ liệu XML rác bị hỏng, sau đó lưu lại thành.xlsx. - Google Sheets: Tải tệp lên Google Drive. Đôi khi trình phân tích cú pháp của Google "dễ tính" hơn Excel và có thể xuất lại một phiên bản sạch lỗi.
Kịch bản: Cuộc khủng hoảng hệ thống lúc 2 giờ sáng
Trời đã khuya, và một báo cáo quan trọng vừa biến thành một "cục gạch". Bạn cố gắng mở tệp .xlsx và Excel hiển thị thông báo: "We found a problem with some content in 'filename.xlsx'. Do you want us to try to recover as much as we can?"
Bạn nhấn "Yes", hy vọng vào một phép màu, nhưng kết quả nhận được là một bảng tính trống rỗng hoặc một tệp nhật ký ghi "Repaired Records: Drawing from /xl/drawings/drawing1.xml part." Một nửa dữ liệu của bạn đã biến mất, và định dạng trông giống như một lỗi trong Ma trận. Điều này thường xảy ra do cấu trúc XML bên trong tệp nén Excel bị lỗi định dạng—có thể do quá trình lưu bị treo, gián đoạn mạng, hoặc một thư viện bên thứ ba tạo ra các thẻ không hợp lệ.
Nguyên nhân gốc rễ: Bản chất chỉ là một tệp ZIP
Tệp .xlsx không phải là một khối dữ liệu nhị phân (binary blob); nó là một kho lưu trữ ZIP đã đổi tên, chứa một cấu trúc thư mục cụ thể gồm các tệp XML. Khi Excel báo có "vấn đề với một số nội dung", điều đó thường có nghĩa là một thẻ XML không được đóng đúng cách, hoặc có một ký tự không hợp lệ (như byte rỗng) ở nơi không nên có. Cụ thể, xl/sharedStrings.xml hoặc xl/worksheets/sheet1.xml thường là những "nghi phạm" chính.
Cách tiếp cận "Phẫu thuật viên": Sửa XML thủ công
Khi tính năng sửa lỗi tích hợp thất bại, bạn phải can thiệp vào bên trong. Đây là cách thực hiện "phẫu thuật" thủ công trên cấu trúc tệp.
Bước 1: Giải nén Workbook
- Tạo một bản sao lưu cho tệp của bạn. Tuyệt đối không thao tác trên tệp gốc.
- Đổi phần mở rộng của tệp từ
.xlsxthành.zip. - Giải nén nội dung vào một thư mục bằng 7-Zip, WinRAR hoặc công cụ có sẵn của hệ điều hành.
Bước 2: Xác định vị trí lỗi
Đi tới thư mục xl/. Hầu hết các lỗi nằm ở:
xl/sharedStrings.xml: Nơi lưu trữ mọi chuỗi ký tự duy nhất được sử dụng trong workbook. Nếu tệp này bị hỏng, toàn bộ tệp sẽ lỗi.xl/worksheets/: Chứasheet1.xml,sheet2.xml, v.v.
Sử dụng các công cụ như VS Code hoặc Notepad++ để mở các tệp này. Nếu tệp quá lớn, đừng dùng Notepad mặc định vì nó sẽ bị treo.
Bước 3: Kiểm tra và sửa lỗi XML
Nếu bạn dùng Linux hoặc macOS, bạn có thể sử dụng xmllint để tìm chính xác dòng bị lỗi:
xmllint --noout xl/sharedStrings.xml
Nếu nó trả về lỗi như Opening and ending tag mismatch, bạn đã tìm thấy vấn đề. Trong VS Code, bạn có thể sử dụng tiện ích mở rộng XML để "Format Document". Trình định dạng thường sẽ dừng lại hoặc làm nổi bật vị trí chính xác mà cú pháp bị lỗi.
Các lỗi phổ biến bao gồm:
- Các thuộc tính trùng lặp trong một thẻ duy nhất.
- Các ký tự không hợp lệ (ký tự điều khiển ASCII) không được thoát chuỗi (escape).
- Tệp bị cắt ngắn khiến các thẻ đóng cuối cùng như
</sst>hoặc</worksheet>bị thiếu.
Sửa thẻ thủ công hoặc xóa nút XML bị hỏng, sau đó lưu tệp.
Bước 4: Đóng gói lại tệp
Đây là phần quan trọng. Bạn phải nén nội dung của thư mục, chứ không phải nén chính thư mục đó.
- Vào bên trong thư mục đã giải nén.
- Chọn tất cả các tệp (
_rels,docProps,xl,[Content_Types].xml). - Chuột phải → Send to Compressed (zipped) folder.
- Rename tệp
.zipkết quả trở lại thành.xlsx.
Xác minh: Xác nhận việc sửa lỗi
Mở tệp mới trong Excel. Nếu nó mở được mà không có thông báo "We found a problem", bạn đã thành công. Hãy thực hiện Save As ngay lập tức để Excel lập chỉ mục lại các thành phần bên trong và đảm bảo cấu trúc tệp tuân thủ 100% tiêu chuẩn OpenXML.
Kiểm tra mất dữ liệu
Nếu bạn phải xóa một thẻ <si> (phần tử chuỗi) bị hỏng trong sharedStrings.xml, một hoặc nhiều ô trong bảng tính của bạn giờ đây sẽ trống hoặc hiển thị số 0. Hãy dùng nhanh CTRL+F để tìm các giá trị mà bạn biết là nằm gần khu vực bị hỏng để kiểm tra tính toàn vẹn.
Tài liệu tham khảo & Công cụ
- Open XML SDK Productivity Tool: Một công cụ của Microsoft có thể xác thực các tệp
.xlsxvà chỉ ra chính xác phần nào của schema bị vi phạm. - Giới hạn SST (Shared String Table): Các tệp lớn thường bị lỗi khi thuộc tính
uniqueCounttrongsharedStrings.xmlkhông khớp với số lượng chuỗi thực tế.

