2015-12-15 19 views
7

Tôi đang cố đọc dữ liệu từ tệp excel.Không thể tìm thấy lỗi thư mục trung tâm

FileStream stream = File.Open (@"C:\Temp\F1\SMRPAC974-00024COMINVDETEXTRACT.xlsx", FileMode.Open, FileAccess.Read); 
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
DataSet result = excelReader.AsDataSet(); 
excelReader.Close(); 
string csvData = ""; 
int row_no = 0; 
while (row_no < result.Tables[0].Rows.Count) 
{ 
for (int i = 0; i < result.Tables[0].Columns.Count; i++) 
{ 
    csvData += result.Tables[0].Rows[row_no][i].ToString() + ";"; 
} 
row_no++; 
csvData += "\n"; 
} 

Vấn đề tôi hiện đang giải quyết là lỗi "Không thể tìm thấy thư mục trung tâm". Tôi không biết điều này có nghĩa là tôi thậm chí đã cố gắng di chuyển các tập tin excel đến các địa điểm khác nhau nhưng tôi vẫn phải đối mặt với cùng một lỗi.

+0

Bạn có thể cung cấp stacktrace không? –

+0

Có thể tệp đó bị hỏng không? – Fred

+1

Xem xét rằng một tập tin .xlsx về cơ bản là một tập tin xml nén và lỗi dường như chỉ ra một vấn đề với các tập tin zip, tôi muốn giả định một tập tin bị hỏng. –

Trả lời

14

Một ngoại lệ nêu:

Không thể tìm thấy thư mục trung tâm

chỉ ra rằng một trong những điều sau đây có thể đúng:

  1. Tập tin bị hỏng
  2. Các tập tin là không thực sự là tệp .xslx (bạn có chắc đó không phải là tệp .xls?)
  3. Thư viện bạn đang sử dụng để đọc các tập tin có một lỗi

Từ mã của bạn có vẻ như bạn đang sử dụng ExcelDataReader và cố gắng mở một định dạng XML (xlsx) tập tin. Bạn có phải là chắc chắn rằng tệp này thực sự không phải là tệp .xls mà ai đó đã đặt tên sai là .xlsx? Bạn có thể kiểm tra điều này bằng cách sử dụng:

IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 

thay vì:

IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
2

kiểm tra thời tiết bạn đang sử dụng .xlsx hay .xls.

Nếu bạn đang sử dụng .xlsx sau đó sử dụng

 IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 

nếu bạn đang sử dụng .xls sau đó sử dụng

IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 

Hy vọng nó giúp. Nó làm việc cho tôi.

Các vấn đề liên quan