multi-importations de tôles avec oledb de compensation “_xlnm#_FilterDatabase” comme noms de feuille de calcul

j'ai un fichier excel avec plusieurs feuilles que je veux importer

le code est assez simple et basique, et devrait fonctionner

mais mon sheetnames reviens comme "_xlnm#_FilterDatabase" dans le débogueur

et il est la racine de mon problème

voici la portion de code:

        string sheetName = "";
file = HostingEnvironment.MapPath("~/files/master1.xlsx");
xConnStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\";";
using (OleDbConnection connection = new OleDbConnection(xConnStr))
{
//get sheet names
connection.Open();
DataTable sheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
//eeo10 (2nd tab: first sheet to be imported)
sheetName = sheets.Rows[1]["TABLE_NAME"].ToString();
OleDbCommand command = new OleDbCommand("Select * FROM ["+sheetName+"]", connection);
//Create DbDataReader to Data Worksheet                
using (OleDbDataReader dr = command.ExecuteReader())
{
//Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnx))
{
bulkCopy.ColumnMappings.Add("code", "id");
bulkCopy.ColumnMappings.Add("category10", "category");
bulkCopy.DestinationTableName = "eeo10";
bulkCopy.WriteToServer(dr);
}
}
//eeo14 (3rd tab: second sheet to be imported)
sheetName = sheets.Rows[2]["TABLE_NAME"].ToString();
command = new OleDbCommand("Select * FROM [" + sheetName + "]", connection);
DataTable cols = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, sheetName, null });
foreach (DataRow r in cols.Rows)
{
System.Diagnostics.Debug.WriteLine("{0} = {1}", r["COLUMN_NAME"], r["ORDINAL_POSITION"]);
}
//Create DbDataReader to Data Worksheet                
using (OleDbDataReader dr = command.ExecuteReader())
{
//Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnx))
{
bulkCopy.ColumnMappings.Add("code", "id");
bulkCopy.ColumnMappings.Add("category14", "category");
bulkCopy.DestinationTableName = "eeo14";
bulkCopy.WriteToServer(dr);
}
}
}

donc comme l'a dit avant

le débogueur retourne sheetName="_xlnm#_FilterDatabase"

qui assez bizarrement le premier eeo10 travaux

mais eeo14 ne marche pas car il est toujours en essayant de travailler avec le eeo10 feuille

ici, peut-être que certains autres renseignements pertinents:

- j'ai désactivé le filtre automatique dans le classeur

- je l'ai mis dans la colonne d'en-tête imprimé juste pour confirmer la feuille c'était la lecture

des idées serait apprec

merci beaucoup!

OriginalL'auteur toy | 2014-04-12