Tôi đã thực hiện một số tìm kiếm ở đây trên SO, trên this, this, this và nhiều hơn nữa, nhưng không có đầu mối, vì vậy tôi sẽ phải hỏi các bạn.Cách xác minh xem tệp có phải là bảng tính excel hợp lệ không?
Tôi đang cố gắng mở tệp Excel qua Interop và tôi đã cài đặt Office 2007, vì vậy tôi đang sử dụng Microsoft.Office.Interop.Excel
phiên bản 14.0
.
Khi tôi cố gắng mở tệp hợp lệ xls
, mọi thứ đều ổn.
Nhưng nếu tôi cố gắng mở tệp không hợp lệ (như bitmap hoặc tệp thi hành) qua Interop, Excel sẽ mở tệp đó mà không có khiếu nại hoặc cảnh báo.
Làm thế nào tôi có thể phát hiện Excel có tệp sổ làm việc không hợp lệ được tải, mà không chặn cảnh báo?
Tôi đang cố viết một bài kiểm tra đơn vị của trình đọc đối tượng Excel của mình. Một trong những trường hợp là cố mở một tệp không hợp lệ.
Một số mã để giúp: Application Creation:
_app = new Application()
{
Visible = false,
DisplayAlerts = false, // <-- I don't want to remove this.
AskToUpdateLinks = false,
};
Workbook mở:
_workbooks.Open(filename);
_workbook = _workbooks.get_Item(1); // 1-based.
_worksheets = _workbook.Sheets;
EDIT: Chỉ cần thêm 1 thông tin: Excel tải các tập tin không hợp lệ. Nếu DisplayAlerts
được thiết lập là true, nó than phiền (mở một hộp thoại) thông báo cho workbook dường như bị hỏng, nhưng nếu DisplayAlerts
được thiết lập là false, nó tải các tập tin giống như dưới đây:
cũng có một cách để kiểm tra tệp ext .csv hoặc xls hợp lệ có vẻ là cách tiếp cận đơn giản nhất ... – MethodMan
Bạn có thể thấy thuộc tính _app.Ready chuyển thành false khi tải tệp không hợp lệ. Chỉ là một ý nghĩ tôi đã không thử nó. – Tod
@DJ KRAZE, tôi đã kiểm tra phần mở rộng trước khi tải tệp. Nhưng điều gì sẽ xảy ra nếu ai đó thay đổi phần mở rộng của tập tin và thử tải một tệp .exe thay thế? – Machado