Ho un problema con la lettura dal file .xlsx (Excel). Ho provato a utilizzare:Come leggere da XLSX (Excel)?
var fileName = @"C:\automated_testing\ProductsUploadTemplate-2015-10-22.xlsx";
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "XLSData");
DataTable data = ds.Tables["XLSData"];
// ... Loop over all rows.
StringBuilder sb = new StringBuilder();
foreach (DataRow row in data.Rows)
{
sb.AppendLine(string.Join(",", row.ItemArray));
}
ma in caso di errore a causa di connectionString
. Così ho aggiornato la linea per sostenere .xlsx:
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 12.0;", fileName);
ma ottengo:
Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato sulla macchina locale.
(problema qui è che, io non sono in grado di installare un nuovo software sul mio computer remoto-test, quindi non sono in grado di risolvere il problema e la necessità di trovare altre soluzioni.)
faccio anche è necessario essere sicuri che i dati importati vengano archiviati in un modo semplice (io sono un programmatore principiante) per farmi scorrere attraverso di esso, cioè per creare oggetti con i dati di una riga.
Altri approcci ho controllato:
commento: sembra funzionare, probabilmente per me, ma non supporta i file di Excel di dimensioni sconosciute (numero casuale di righe e colonne).
commento: non supporta impostazioni nomi delle colonne da riga diversa di prima (in alcuni dei miei file Excel, ci sono i commenti in 4-6 prime file e poi è Testate e dati di seguito).
commento: stesso problema di cui sopra.
commento: scaricato peso del pacchetto era finita 60MB e mi richiede di installarlo sul sistema, che non è possibile nella mia situazione. Ad ogni modo, le persone commentano che è limitato a 150 righe.
Nel frattempo cercherò di controllare https://code.google.com/p/linqtoexcel/, ma tutte le altre idee sono più che benvenuti!
EDIT: appena controllato che LinqToExcel, stesso problema come sopra:
Il provider 'Microsoft.ACE.OLEDB.12.0' non è registrato sulla macchina locale.
EDIT2: In definitiva, sembra che questa soluzione ha risolto il mio problema:
https://stackoverflow.com/a/19065266/3146582
epplus https://epplus.codeplex.com/ – Fredou
@Fredou: non è vero creare fogli di calcolo? Ho bisogno di leggere da uno. Ne hai un esempio? –
può anche leggere file excel, controllare questa domanda stackoverflow http://stackoverflow.com/questions/11685204/reading-excel-spreasheet-using-epplus o questo post di blog http://blog.fryhard.com/archive/2010 /10/28/reading-xlsx-files-using-c-and-epplus.aspx – Fredou