2010-07-04 19 views
0

J'ai un programme C# pour écrire dans Excel qui doit prendre en charge des fichiers sans en-têtes et fichiers avec.Création d'un classeur Excel via OLEDB sans en-têtes

Si j'écris où je veux en-têtes, c'est bien, mais dans le cas de la lecture d'un fichier sans en-têtes, je veux ensuite écrire une table sans en-têtes. Si j'utilise les mêmes titres pour créer une table, je reçois toujours F1, F2, F3 etc dans le contenu.

Ma chaîne de connexion pour l'écriture est: -

Provider = Microsoft.Jet.OLEDB.4.0; Source de données = filename; Extended Propriétés = "Excel 8.0; HDR = Non; IMEX = 0;"

Des idées sur la façon de perdre les en-têtes?

+0

double possible de [OleDB & Excel mélangés types de données: les données manquantes] (http://stackoverflow.com/questions/3232281/oledb-mixed-excel-datatypes-missing-data) –

Répondre

0

Cette question est un peu vieux maintenant, mais voici comment je répondu une autre question similaire:

Ce n'est pas assez, mais c'est la seule façon que je l'ai trouvé pour créer une nouvelle feuille de calcul avec rien dans ce . Le seul problème que j'ai découvert est qu'Oledb crée automatiquement une plage nommée sur les cellules d'en-tête spécifiées dans la commande CREATE, mais en supposant que cela ne vous intéresse pas, cela devrait fonctionner correctement.

string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + 
    ";Mode=ReadWrite;Extended Properties=\"Excel 8.0;HDR=NO\""; 

using (OleDbConnection conn = new OleDbConnection(connectionString)) 
{ 
    conn.Open(); 

    using (OleDbCommand cmd = new OleDbCommand()) 
    { 
     cmd.Connection = conn; 
     cmd.CommandText = "CREATE TABLE [MySheet] (a string)"; // Doesn't matter what the field is called 
     cmd.ExecuteNonQuery(); 

     cmd.CommandText = "UPDATE [MySheet$] SET F1 = \"\""; 
     cmd.ExecuteNonQuery(); 
    } 

    conn.Close(); 
}