Maison  >  Article  >  développement back-end  >  Explication détaillée de l'exemple de code pour C# pour créer des fichiers Excel et exporter des données vers des fichiers Excel (image)

Explication détaillée de l'exemple de code pour C# pour créer des fichiers Excel et exporter des données vers des fichiers Excel (image)

黄舟
黄舟original
2017-03-13 17:47:162289parcourir

Matériaux des outils :

Windows 7, Visual Studio 2010, Microsoft Office 2007

Créer une solution

Menu》Nouveau》Projet》Application Windows Forms :


Ajoutez des composants associés :

Ajoutez deux DataGridView, une TextBox et deux boutons, comme indiqué ci-dessous :


Ajouter une ressource Excel :

C#Créer un fichier Excel Ici, un fichier Excel pré-créé est effectivement extrait de la ressource. L'extraction du fichier est réussie. Enfin, utilisez la méthode OleDb pour vous connecter à Excel et écrire des données dans le fichier Excel.

Créez d'abord un nouveau fichier Excel dans le dossier et définissez les noms de colonnes dans la première ligne de la feuille 1 :


Double -cliquez sur le fichier « Resources.resx » pour ouvrir la vue du fichier de ressources :


Ajoutez un fichier existant et sélectionnez le fichier Excel que vous venez de créer


Extraire le fichier Excel de la ressource

            string excelPath = AppDomain.CurrentDomain.BaseDirectory + "Excel" + DateTime.Now.Ticks + ".xlsx";
            if (System.IO.File.Exists(excelPath))
            {
                textBox1.Text += ("文件已经存在!");
                return;
            }

            try
            {
                //从资源中提取Excel文件
                System.IO.FileStream fs = new System.IO.FileStream(excelPath, FileMode.OpenOrCreate);
                fs.SetLength(0);
                fs.Write(Properties.Resources.Excel, 0, Properties.Resources.Excel.Length);
                fs.Close();
                fs.Dispose();
                textBox1.Text = "提取Excel文件成功!" + "\r\n";
            }
            catch (System.Exception ex)
            {
                excelPath = string.Empty;
                textBox1.Text += ("提取Excel文件失败:" + ex.Message);
                textBox1.Text += ("\r\n");
                Application.DoEvents();
                return;
            }

Définir la chaîne de connexion

//定义OleDB连接字符串
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";
            Extended Properties='Excel 12.0; HDR=yes; IMEX=10'";
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = strConn;

Remarque : La valeur de IMEX dans le la chaîne de connexion est 10. Si elle est 1 ou 2, l'erreur " l'opération doit utiliser une requête actualisable " sera signalée lors de l'exécution de l'instruction Insert Into.

Affichez les informations de tous les tableaux du fichier Excel dans dataGridView1

                DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                dataGridView1.DataSource = oleDt;
                dataGridView1.Show();

Insérez plusieurs éléments de données dans le tableau "Sheet1". Lorsque vous accédez au tableau Excel, vous devez l'ajouter. après le nom de la table. Symbole "$", l'instruction Insert n'a pas besoin de spécifier le nom de la colonne

                OleDbCommand cmd = null;
                try
                {
                    //向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
                    cmd = new OleDbCommand("Insert Into [Sheet1$] Values('abc', 'bac', '0', '123456', 'test','测试','aa')", conn);//(A,B,C,D,E,F,G) 
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                }
                catch (System.Exception ex)
                {
                    textBox1.Text += ("插入数据失败:" + ex.Message);
                    textBox1.Text += ("\r\n");
                }

pour afficher le contenu de la table "Sheet1" dans dataGridView2. besoin d'ajouter le symbole "$" après le nom de la table

                cmd = new OleDbCommand("Select * From [Sheet1$]", conn);
                OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                adp.Fill(ds);
                dataGridView2.DataSource = ds.Tables[0];

Parcourir le contenu du schéma

                DataTable dt = conn.GetSchema();
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    textBox1.Text += dt.Columns[i].Caption;
                    if (i + 1 < dt.Columns.Count)
                    {
                        textBox1.Text += ",";
                    }
                }

                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (dt.Rows[j][dt.Columns[i]] != null)
                        {
                            textBox1.Text += dt.Rows[j][dt.Columns[i]].ToString();
                        }
                        else
                        {
                            textBox1.Text += "null";
                        }

                        if (i + 1 < dt.Columns.Count)
                        {
                            textBox1.Text += ",";
                        }
                    }
                    textBox1.Text += ("\r\n");
                }

Fermer la connexion de données Excel

                if (conn.State != ConnectionState.Closed)
                {
                    try
                    {
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        textBox1.Text += ("关闭Excel数据连接:" + ex.Message);
                        textBox1.Text += ("\r\n");
                    }
                }

Ouvrez le répertoire des fichiers

System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn