Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VB.NET] Importer un fichier Excel sur VB.NET

Sujet résolu
12 mai 2013 à 17:59:17

Bonjour, je crée un interface sur VB.NET  et j'ai besoin d'intégrer des Tableaux des bilans financiers.

Je souhaiterai importer ces tableaux (déjà faits sur Excel 2007) directement sur VB, pour pas refaire

le travail à zéro. Comment dois-je procéder SVP ?

  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2013 à 11:46:42

Il faut creer un DATASET et tu charge le fichier dessus

Dim xls_connec As New OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;data source=" + Filename + ";Extended Properties='Excel 8.0;IMEX=1'")

  • Partager sur Facebook
  • Partager sur Twitter
13 mai 2013 à 22:07:15

Voici un exemple du code:

Try

           'bd c'est le nom du fichier exel choisit
            Dim cnExel As New OleDbConnection("provider=MicrosoftAce.oledb.12.0;Data source=" & TextBox1.Text & ";Extended properties='Exel 12.0 Xml';HDR=YES;")
            Dim cnSql As New SqlConnection("Data Source=.;Initial Catalog=" & bd & ";Integrated Security=True")
            Dim ds As New DataSet
            Dim da As New OleDbDataAdapter
            Dim cmd1, cmd2 As OleDbCommand
            cmd1 = New OleDbCommand("select *from [feuil1$]", cnExel)
            cmd2 = New OleDbCommand("select *from [feuil2$]", cnExel)
            da.SelectCommand = cmd1
            da.Fill(ds, "table1")
            da.SelectCommand = cmd2
            da.Fill(ds, "table2")
            DataGridView1.DataSource = ds.Tables("table1")
            DataGridView1.DataSource = ds.Tables("table2")
            '--------------------------------------------------
            Dim inter1 As New SqlBulkCopy(cnSql)
            Dim inter2 As New SqlBulkCopy(cnSql)
            cnSql.Open()
            inter1.DestinationTableName = "table_1"
            inter1.WriteToServer(ds.Tables("table1"))
            inter2.DestinationTableName = "table_2"
            inter2.WriteToServer(ds.Tables("table2"))
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try

  • Partager sur Facebook
  • Partager sur Twitter
14 mai 2013 à 0:02:10

Effectivement, t'orienter vers OleDB me semble une bonne idée si c'est pour importer des données d'un tableau Excel assez "simple" (j'entends par là pas de formules, de mise en page ou de doubles en-tête à conserver par exemple).

Petit exemple simple à adapter à ta situation :

private void BtnLoad_Click(object sender, EventArgs e)
{
	try
	{
                System.Data.OleDb.OleDbConnection connection;
                System.Data.DataSet dataSet;
                System.Data.OleDb.OleDbDataAdapter command;
                connection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\\monfichier.xls';Extended Properties=Excel 8.0;");
                command = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", connection);
                command.TableMappings.Add("Table", "TestTable");
                dataSet = new System.Data.DataSet();
                command.Fill(dataSet);
                dataGridView.DataSource = dataSet.Tables[0];
                connection.Close();
        }
        catch (Exception ex)
	{
        	MessageBox.Show(ex.ToString());
	}
}

En espérant que ça te mette sur la voie, bonne continuation !

  • Partager sur Facebook
  • Partager sur Twitter
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
15 mai 2013 à 13:16:19

Merci beaucoup tout le monde !
  • Partager sur Facebook
  • Partager sur Twitter
15 mai 2013 à 23:10:57

De rien,

Si tout est bon, n'hésite pas à passer le topic en résolu ;)

  • Partager sur Facebook
  • Partager sur Twitter
Si un message vous a aidé, n'oubliez pas le +1 et de passer votre sujet en "Résolu" ! :)
16 mai 2013 à 13:26:22

C'est bizarre, je ne trouve pas l'icone: Sujet résolu en haut comme d'hab ...

-
Edité par synlees 16 mai 2013 à 13:26:40

  • Partager sur Facebook
  • Partager sur Twitter
29 août 2013 à 10:24:29

Bonjour

j'ai la même question que Synless

je suis entrain d'essayer le code publié par meryemarabia16, mais puisque je travaille sous une base de données Access cette partie de code ne marche pas, si quelqu'un peut m'aider à convertir ça pour qu'il soit adaptable à ma base de données Access je serait reconnaissante.

 Dim inter1 As New SqlBulkCopy(cnSql)
            Dim inter2 As New SqlBulkCopy(cnSql)
            cnSql.Open()
            inter1.DestinationTableName = "table_1"
            inter1.WriteToServer(ds.Tables("table1"))
            inter2.DestinationTableName = "table_2"
            inter2.WriteToServer(ds.Tables("table2"))
        Catch ex As Exception
            MsgBox(ex.ToString)

Merci d'avance

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2019 à 17:40:35

j'ai un fichier excel avec beaucoup de cellules fusionnées comment faire pour l'importer dans un datatable en vb 

  • Partager sur Facebook
  • Partager sur Twitter
21 mars 2019 à 20:22:45

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter

Pas d'aide concernant le code par MP, le forum est là pour ça :)