2012-01-19 8 views
5

Ho trovato molte raccomandazioni qui per utilizzare ExcelLibrary per la modifica di file Excel, ma non riesco a trovare alcuna documentazione da nessuna parte.Documentazione excellibrary

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

+0

C'è qualcosa di specifico che stai cercando di fare? Ho usato ExcelLibrary e ho trovato l'API semplice da capire. – Lester

+0

Sto provando a convertire il file excel in C# datatable e non conosco la sintassi. Mi piace sempre avere la documentazione completa, e non riesco a trovarne alcuna qui. –

+0

Per coloro che ancora scelgono le biblioteche: esiste un progetto molto migliore (e anche meglio documentato): http://epplus.codeplex.com/ – Laoujin

risposta

6

Prova questo:

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

non è esattamente il codice più bella, ma restituisce un DataTable. Ti consiglio di utilizzare i valori direttamente, se possibile, ad es. invece di convertire in un DataTable leggere i valori direttamente e saltare questo passaggio di conversione.

+0

Grazie Lester. Solo un problema, la prima riga non è l'intestazione. Non ne ho bisogno. Cosa posso fare in modo che la prima riga non sia intestazione, quindi è quella predefinita (Colonna1, Colonna2 e così via). Grazie. –

+1

Ho aggiornato il codice. Dovrai semplicemente inserire manualmente il numero di colonne, se necessario. Potresti riuscire a fare 1 meglio e metterlo in un ciclo ma non riesco a testare adesso. – Lester

0

non sono sicuro di cosa si tratta, ma penso che il metodo preferito di manipolare documenti di Microsoft Office è quello di utilizzare Open XML SDK 2.0.

+2

No, non lo sono: "Attualmente è implementato il formato .xls (BIFF8). .xlsx (Excel 2007) può anche essere supportato. " – Vinzz

+0

Sì, hai assolutamente ragione. Ero troppo veloce per rispondere e non l'ho letto completamente. Correggerò la mia risposta – BG100

2

Questa domanda e le sue risposte sono davvero vecchie. Chiunque stia guardando questo ora, dimentica ExcelLibrary. NPOI è ora la strada da percorrere, e funziona bene sia per .xls e .xlsx

https://npoi.codeplex.com/ - dove trovare i C# download
https://poi.apache.org/ - la migliore documentazione che ho trovato, anche se è la versione di 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

Si prega di fornire ulteriori spiegazioni, tramite –

+0

Come autoadattare la cella in ExcelLibrary.dll? –