Tin tức công nghệ Tạp chí công nghệ IG E-Learning Games trực tuyến Tìm kiếm Liên hệ Xin chào Bạn !   Đăng nhập  Đăng ký 
Tìm kiếm  
Trang chủ > Tạp chí công nghệ > Programming7/4/2008 3:35:41 AM
Thao tác với file Excel: Đọc dữ liệu từ file Excel Đôi khi bạn cần đọc dữ liệu từ tài liệu Excel từ ứng dụng của bạn. Điều đó rất cần với các ứng dụng văn phòng. bài viết này tôi hướng dẫn các bạn điều đó

Giới thiệu

Ứng dụng Excel đã trở thành ứng dụng không thể thiếu đối với người làm văn phòng, đặc biệt là các nhân viên kế toán. Và đó cũng chính là vấn đề khi doanh nghiệp của bạn sử dụng một phần mềm khác không giao tiếp với Excel. Chúng ta sẽ từng bước giải quyết các vấn đề này.

Qui tắc

Về nguyên tắc, việc đọc dữ liệu từ Excel giống như việc đọc dữ liệu từ CSDL. Bạn hãy hình dung một file Excel là một database, như thế mỗi Worksheet là một table dữ liệu.

Vậy chúng ta chỉ cần lập lại những qui tắc kết nối đến CSDL để áp dụng cho việc kết nối và đọc, ghi dữ liệu từ file Excel.

Thực hiện

Dưới đây là hai hàm làm việc với Excel. GetSheetData  là hàn lấy về dữ liệu của một Worksheet trong file Excel.

static
DataTable GetSheetData(string excelFile, int sheetindex){

string sheetname = GetExcelSheetNames(excelFile)[sheetindex];
string srcConnString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;""";
string srcQuery = "Select * from [" + sheetname + "]";

OleDbConnection srcConn = new OleDbConnection(srcConnString);
srcConn.Open();
OleDbCommand objCmdSelect = new OleDbCommand(srcQuery, srcConn);
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(objCmdSelect);
da.Fill(ds, sheetname);
srcConn.Close();
return ds.Tables[0];
}

Và sau đây là hàm lấy về tập hợp tên của những Sheets tồn tại trong file Excel. 

static
String[] GetExcelSheetNames(string excelFile)
{
OleDbConnection objConn = null;
System.Data.DataTable dt = null;
try
{
// Connection String. Change the excel file to the file you
// will search.
String connString = "Provider=Microsoft.Jet.OLEDB.4.0;"
+
"Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
// Create connection object by using the preceding connection string. objConn = new OleDbConnection(connString);
// Mở kết nối đến CSDL
objConn.Open();
// Lấy về dữ liệu 
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (dt == null)
{
return null;
}
String[] excelSheets = new String[dt.Rows.Count];
int i = 0;
// Add the sheet name to the string array.
foreach (DataRow row in dt.Rows)
{
excelSheets[i] = row["TABLE_NAME"].ToString();
i++;
}
return excelSheets;
}
catch (Exception ex)
{
return null;
}
finally
{
// Clean up.
if (objConn != null)
{
objConn.Close();
objConn.Dispose();
}
if (dt != null)
{
dt.Dispose();
}
}
}

Ở cả hai hàm, thì chúng ta có thể dễ dàng nhận thấy các bước để kết nối đến file Excel giống như việc kết nối đến CSDL MySQL hoặc MSSQL...

Các bước kết nối:
Khai báo ConnectionString:

String
connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
Ở đây Data Source chính là đường dẫn và tên file Excel.

Tạo kết nối và mở kết nối
OleDbConnection objConn = new OleDbConnection(connString);
objConn.Open();

Lấy dữ liệu

DataTable dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

Kết luận

Khi làm việc với Excel, bạn hãy nhớ nguyên tắc như đã được nêu ở trên, chắc chắn bạn sẽ làm việc một cách trơn tru. Trên đây chỉ là 2 hàm ví dụ, tôi hi vọng các bạn sẽ áp dụng và mở rộng trong các ứng dụng của bạn.

  Tác giả: #1 

Phân mục
 IO
 Java
 PHP
 2005
 2008
 MySQL
 Oracle
Danh sách thành viên tích cực
(30 ngày trở lại)
1. dungmeo (30)
2. buratino (14)
3. chan (9)
4. tramco (7)
6. anhtuan (4)
8. tienlbhoc (3)
9. gosu (2)
10. vinastar (2)
Thống kê iWiki
Tổng số bài viết 82
Tổng số Comments 21
 TRANG CHỦ   |   Đặt ITGatevn làm trang chủ   |   Liên hệ quảng cáo  |   Gửi bài viết
Copyright 2006-2010 ITGatevn.com.vn, All right reserved Contact us - Thông tin Tòa soạn
Xây dựng trên công nghệ IGCMS V3.0