Tôi gặp sự cố khi đọc tệp .xlsx (Excel). Tôi đã cố gắng sử dụng:Cách đọc từ XLSX (Excel)?
var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "XLSData");
DataTable data = ds.Tables["XLSData"];
// ... Loop over all rows.
StringBuilder sb = new StringBuilder();
foreach (DataRow row in data.Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}
nhưng nếu không thành công do connectionString
. Vì vậy, tôi cập nhật dòng để hỗ trợ .xlsx:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);
nhưng tôi nhận được:
Nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' không được đăng ký trên máy tính cục bộ.
(Vấn đề ở đây là, tôi không thể cài đặt phần mềm mới trên máy tính từ xa thử nghiệm của tôi, vì vậy tôi không thể sửa chữa nó và cần phải tìm giải pháp khác.)
Tôi cũng làm cần phải chắc chắn rằng dữ liệu đã nhập sẽ được lưu trữ một cách đơn giản (tôi là lập trình viên mới bắt đầu) để cho phép tôi lặp qua nó, tức là tạo các đối tượng với dữ liệu của hàng.
cách tiếp cận khác tôi đã kiểm tra:
bình luận: dường như có thể làm việc cho tôi, nhưng không hỗ trợ các file Excel có kích thước chưa biết (số ngẫu nhiên của các hàng và cột).
bình luận: không hỗ trợ cài đặt tên cột từ hàng khác so với người đầu tiên (trong một số các tập tin Excel của tôi, có ý kiến trong 4-6 hàng đầu tiên và sau đó là hàng tiêu đề và dữ liệu bên dưới).
bình luận: cùng một vấn đề như trên.
bình luận: tải về gói trọng lượng đã kết thúc 60MB và nó đòi hỏi tôi phải cài đặt nó trên hệ thống, đó là không thể thực hiện trong hoàn cảnh của tôi. Dù sao, mọi người bình luận rằng nó được giới hạn trong 150 hàng.
Trong khi đó, tôi sẽ cố gắng kiểm tra https://code.google.com/p/linqtoexcel/, nhưng tất cả ý tưởng khác đều được hoan nghênh!
EDIT: Chỉ cần kiểm tra rằng LinqToExcel, cùng một vấn đề như trên:
Nhà cung cấp 'Microsoft.ACE.OLEDB.12.0' không được đăng ký trên máy cục bộ.
EDIT2: Cuối cùng, dường như giải pháp này giải quyết vấn đề của tôi:
https://stackoverflow.com/a/19065266/3146582
epplus https://epplus.codeplex.com/ – Fredou
@Fredou: không nó tạo bảng tính? Tôi cần phải đọc từ một. Bạn có ví dụ nào về điều đó không? –
nó cũng có thể đọc tệp excel, kiểm tra câu hỏi stackoverflow này http://stackoverflow.com/questions/11685204/reading-excel-spreasheet-using-epplus hoặc mục blog này http://blog.fryhard.com/archive/2010 /10/28/reading-xlsx-files-using-c-and-epplus.aspx – Fredou