2012-01-19 21 views
5

Burada excell dosyalarını düzenlemek için ExcelLibrary kullanmak için birçok öneri buldum, ancak herhangi bir yerde herhangi bir belge bulamıyorum.Excellibrary belgeleri

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

+0

Yapmaya çalıştığınız belirli bir şey var mı? ExcelLibrary kullandım ve anlaması kolay anı buldu. – Lester

+0

Excel dosyasını C# datatable'a dönüştürmeye çalışıyorum ve sintax'ı bilmiyorum. Her zaman tam belgelere sahip olmayı severim ve bunların hiçbirini burada bulamıyorum. –

+0

Kütüphaneleri seçmeye hala devam edenler için: Daha iyi (ve daha iyi belgelenmiş) bir proje var: http://epplus.codeplex.com/ – Laoujin

cevap

6

bu deneyin:

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); 
} 

O tam olarak güzel kod ama bir DataTable döndürür oluyor. Mümkünse değerleri doğrudan kullanmanız önerilir. DataTable'a dönüştürmek yerine değerleri doğrudan okuyun ve bu dönüştürme adımını atlayın.

+0

Teşekkürler Lester. Tek sorun, ilk satır başlık değil. İhtiyacım yok. Ne yapabilirim ki ilk satır başlık değil, bu yüzden varsayılan (Sütun1, Sütun2, vb.). Teşekkürler. –

+1

Kodu güncelledim. Sadece gerektiğinde sütun sayısını manuel olarak eklemeniz gerekir. 1 tane daha iyi yapabilir ve sadece bir döngüye sokabilirsiniz ama şu anda test edemiyorum. – Lester

0

bunun ne olduğundan emin değilim ama Microsoft Office belgelerini manipüle tercih edilen yöntem Open XML SDK 2.0 kullanmak olduğunu düşünüyorum.

+2

Hayır, bunlar şu şekilde değil: "Şu anda .xls (BIFF8) biçimi uygulanmaktadır. .xlsx (Excel 2007) da desteklenebilir. " – Vinzz

+0

Evet, kesinlikle haklısınız. Cevaplamak için çok hızlıydım ve tam olarak okumamıştım. Cevabımı düzeltirim. – BG100

2

Bu soru ve cevapları gerçekten eskidir. Şu anda buna bakan herkes - ExcelLibrary'i unutun. NPOI şimdi gitmek yoludur ve her iki .xls için iyi çalışıyor ve

https://npoi.codeplex.com/

.xlsx - bu Java sürümü olmasına rağmen buldum iyi belgelerine - C# indirmeleri
https://poi.apache.org/ nereden.

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

Lütfen daha fazla açıklama verin, thx –

+0

ExcelLibrary.dll dosyasında autoFit hücresi nasıl? –