2012-01-19 30 views
5

Tôi đã tìm thấy nhiều đề xuất ở đây để sử dụng ExcelLibrary để chỉnh sửa các tệp excell, nhưng tôi không thể tìm thấy bất kỳ tài liệu nào ở bất kỳ đâu.Tài liệu Excellibrary

http://code.google.com/p/excellibrary/

+0

Có điều gì đó cụ thể mà bạn đang cố gắng làm không? Tôi đã sử dụng ExcelLibrary và tìm thấy api đơn giản để hiểu. – Lester

+0

Tôi đang cố chuyển đổi tệp excel thành C# datatable, và tôi không biết sintax. Tôi luôn muốn có tài liệu đầy đủ và tôi không thể tìm thấy bất kỳ tài liệu nào ở đây. –

+0

Đối với những thư viện vẫn chọn: Có một dự án tốt hơn (và cũng được ghi lại tốt hơn): http://epplus.codeplex.com/ – Laoujin

Trả lời

6

Hãy thử điều này:

var workbook = Workbook.Load("spreadsheet.xls"); 
var worksheet = workbook.Worksheets[0]; // assuming only 1 worksheet 
var cells = worksheet.Cells; 
var dataTable = new DataTable("datatable"); 

// add columns 
dataTable.Columns.Add("column1"); 
dataTable.Columns.Add("column2"); 
... 

// add rows 
for (int rowIndex = cells.FirstRowIndex + 1; rowIndex <= cells.LastRowIndex; rowIndex++) 
{ 
    var values = new List<string>(); 
    foreach(var cell in cells.GetRow(rowIndex)) 
    { 
     values.Add(cell.Value.StringValue); 
    } 

    dataTable.LoadDataRow(values.ToArray(), true); 
} 

Nó không chính xác mã đẹp nhưng nó trả về một DataTable. Tôi khuyên bạn chỉ nên sử dụng các giá trị trực tiếp nếu có thể. thay vì chuyển đổi thành số DataTable, hãy đọc trực tiếp các giá trị và bỏ qua bước chuyển đổi này.

+0

Cảm ơn Lester. Chỉ có một vấn đề, hàng đầu tiên không phải là tiêu đề. Tôi không cần. Những gì tôi có thể làm như vậy hàng đầu tiên không phải là tiêu đề, do đó, đó là mặc định (Column1, Column2, vv). Cảm ơn. –

+1

Tôi đã cập nhật mã. Bạn chỉ cần chèn thủ công số cột nếu cần. Bạn có thể làm 1 tốt hơn và chỉ cần đặt nó trong một vòng lặp nhưng tôi không thể kiểm tra ngay bây giờ. – Lester

0

Tôi không chắc chắn này là gì, nhưng tôi nghĩ rằng phương pháp ưa thích của thao tác tài liệu Microsoft Office là sử dụng Open XML SDK 2.0.

+2

Không, chúng không: "Hiện tại định dạng .xls (BIFF8) được triển khai. Trong tương lai .xlsx (Excel 2007) cũng có thể được hỗ trợ. " – Vinzz

+0

Vâng, bạn hoàn toàn đúng. Tôi đã quá nhanh để trả lời và không đọc nó đầy đủ. Tôi sẽ sửa đổi câu trả lời của tôi. – BG100

2

Câu hỏi này và câu trả lời của câu hỏi này thực sự cũ. Bất cứ ai nhìn vào điều này bây giờ - quên ExcelLibrary. NPOI bây giờ là con đường để đi, và hoạt động tốt cho cả .xls và .xlsx

https://npoi.codeplex.com/ - nơi để có được C# tải
https://poi.apache.org/ - tài liệu tốt nhất mà tôi đã tìm thấy, mặc dù nó là phiên bản Java.

1
//create new xls file 
string file = "C:\newdoc.xls"; 
Workbook workbook = new Workbook(); 
Worksheet worksheet = new Worksheet("First Sheet"); 
worksheet.Cells[0, 1] = new Cell((short)1); 
worksheet.Cells[2, 0] = new Cell(9999999); 
worksheet.Cells[3, 3] = new Cell((decimal)3.45); 
worksheet.Cells[2, 2] = new Cell("Text string"); 
worksheet.Cells[2, 4] = new Cell("Second string"); 
worksheet.Cells[4, 0] = new Cell(32764.5, "#,##0.00"); 
worksheet.Cells[5, 1] = new Cell(DateTime.Now, @"YYYY-MM-DD"); worksheet.Cells.ColumnWidth[0, 1] = 3000; 
workbook.Worksheets.Add(worksheet); workbook.Save(file); 

// open xls file 
Workbook book = Workbook.Load(file); 
Worksheet sheet = book.Worksheets[0]; 

// traverse cells 
foreach (Pair, Cell> cell in sheet.Cells) 
{ 
    dgvCells[cell.Left.Right, cell.Left.Left].Value = cell.Right.Value; 
} 

// traverse rows by Index 
for (int rowIndex = sheet.Cells.FirstRowIndex; rowIndex <= sheet.Cells.LastRowIndex; rowIndex++) 
{ 
    Row row = sheet.Cells.GetRow(rowIndex); 
    for (int colIndex = row.FirstColIndex; colIndex <= row.LastColIndex; colIndex++) 
    { 
     Cell cell = row.GetCell(colIndex); 
    } 
} 
+0

Vui lòng giải thích thêm, thx –

+0

Làm thế nào để tự động điền ô trong ExcelLibrary.dll? –