Excelファイルの作成とデータのExcelファイルへのエクスポートを行うC#のサンプルコードの詳細説明(画像)

黄舟
リリース: 2017-03-13 17:47:16
オリジナル
2288 人が閲覧しました

ツールマテリアル:

Windows 7、Visual Studio 2010、Microsoft Office 2007

ソリューションの作成

メニュー》新規》プロジェクト》Windows Formsアプリケーション:


関連コンポーネントの追加:

2つのDataGridView、TextBoxを追加、以下に示す 2 つのボタン:


Excel リソースの追加:

C# ここで、事前に作成された Excel ファイルが実際にリソースから抽出されます。 、OleDb メソッドを使用して Excel に接続し、データを Excel ファイルに書き込みます。

まず、フォルダーに新しい Excel ファイルを作成し、Sheet1 の最初の行に列名を設定します:


「Resources.resx」ファイルをダブルクリックして、リソース ファイル ビューを開きます:


現在を追加 ファイルがあるので、先ほど作成した Excel ファイルを選択します


リソースから Excel ファイルを抽出します

            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;
            }
ログイン後にコピー

接続文字列を定義します

//定义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;
ログイン後にコピー

注: 接続内の IMEX の値string が 10 で、 1 または 2 の場合、 Insert Into ステートメントを実行すると、「

操作では更新可能なクエリを使用する必要があります」というエラーが報告されます。

dataGridView1 に Excel ファイル内のすべてのテーブルの情報を表示します

                DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                dataGridView1.DataSource = oleDt;
                dataGridView1.Show();
ログイン後にコピー

Excel テーブルにアクセスするときは、テーブル名の後に「$」記号を追加する必要があります。列名

                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");
                }
ログイン後にコピー

はdataGridView2のテーブル「Sheet1」の内容を表示するため、Insert文の指定は必要ありません

                cmd = new OleDbCommand("Select * From [Sheet1$]", conn);
                OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                adp.Fill(ds);
                dataGridView2.DataSource = ds.Tables[0];
ログイン後にコピー

Traverseの後にExcelテーブルにアクセスする場合は「$」記号を追加する必要があります。スキーマの内容

                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");
                }
ログイン後にコピー

Excel データ接続を閉じる

                if (conn.State != ConnectionState.Closed)
                {
                    try
                    {
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        textBox1.Text += ("关闭Excel数据连接:" + ex.Message);
                        textBox1.Text += ("\r\n");
                    }
                }
ログイン後にコピー

ファイルディレクトリを開く

System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);
ログイン後にコピー

以上がExcelファイルの作成とデータのExcelファイルへのエクスポートを行うC#のサンプルコードの詳細説明(画像)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!