2012-03-30 22 views
7

Tôi đang cố gắng sử dụng C# để đọc tệp excel có kiểu dữ liệu xen kẽ. Dưới đây là chuỗi kết nối của tôiĐọc Excel Data InterMixed DataType mà không sửa đổi khóa Registry

var path = //xls location 
var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;IMEX=1;'"); 

Nghiên cứu dạy tôi rằng hoàn chỉnh Extended Properties trong chuỗi kết nối được coi là

Excel 8.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text

Tuy nhiên, tôi đã được thông báo rằng trong chuỗi kết nối, các TypeGuessRows=0có không có nghĩa là vì giá trị sẽ là được lấy trực tiếp từ Cơ quan đăng ký. Do đó tôi cần phải sửa đổi khóa bằng tay và loại bỏ thuộc tính này khỏi chuỗi kết nối.

Chìa khóa registry cụ thể mà đã tham gia là:

Đường dẫn:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Excel

chính:

TypeGuessRows

giá trị gốc = , để làm cho nó hoạt thay đổi thành =

Nếu không làm điều này các IMEX sẽ không làm việc thậm chí khó khăn tôi thêm TypeGuessRows=0 vào Extended Properties.

Tuy nhiên, công ty của tôi cấm sửa đổi giá trị đăng ký (đúng). Tôi được yêu cầu tìm các giải pháp thay thế để làm điều này.

Nói tóm lại:

Có cách nào để đọc datatype trộn trội tập tin mà không phải sửa đổi bất kỳ khóa registry (mà là một thực tế khá phổ biến)?

chủ đề tiếp theo:

Bạn đã có kinh nghiệm này trước đây chưa? Có possibilites mà chúng tôi có thể thiết lập TypeGuessRows=0 từ chuỗi kết nối mà không cần phải sửa đổi khóa registry (hủy bỏ tiền đề của tôi ở trên).

Nếu mọi thứ không làm việc với OleDb:

Có lựa chọn thay thế bên cạnh OleDb?

Tôi đánh giá cao mọi lời khuyên hoặc gợi ý.

Trân

Trả lời

6

Những gì bạn có thể làm là yêu cầu có tiêu đề trong hàng đầu tiên của Excel và thiết lập chuỗi kết nối để

var MyConnection = new OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0; Data Source='" + path + "';Extended Properties='Excel 8.0;HDR=No;IMEX=1;'"); 

Mấu chốt ở đây là để thiết lập HDR = Không (NO HEADER), tuy nhiên kể từ khi bạn có tiêu đề bây giờ mỗi cột sẽ được coi là chuỗi (văn bản) và bạn có thể thực hiện phân tích cú pháp hoặc xác thực trên mỗi giá trị ô. Tất nhiên bạn sẽ cần phải bỏ qua hoặc loại bỏ hàng đầu tiên, vì nó chứa thông tin tiêu đề.

2

Thay vì sử dụng OleDb tôi biết sử dụng Excel Data Reader. Nó hoạt động rất nhiều! Rat khuyen khich!

+0

Khám phá tuyệt vời! Cảm ơn! – Bronek

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