程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#如何創建Excel文件並將數據導出到Excel文件

C#如何創建Excel文件並將數據導出到Excel文件

編輯:關於C#

工具原料:

Windows 7,Visual Studio 2010, Microsoft Office 2007

創建解決方案

菜單》新建》項目》Windows窗體應用程序:

添加相關組件:

添加兩個DataGridView,一個TextBox,兩個按鈕 ,如下圖:

URL:http://www.bianceng.cn/Programming/csharp/201410/45779.htm

添加Excel資源:

C#創建Excel文件,這裡實際上是從資源中提取一個事先創建好的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文件
// URL:http://www.bianceng.cn/Programming/csharp/201410/45779.htm
    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的值使用的是10,如果是1或2,在執行Insert Into語句時就會報“操作必須使用一個可更新的查詢”的錯誤。

在dataGridView1中顯示Excel文件中的所有表的信息

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

向"Sheet1"表中插入幾條數據,訪問Excel的表的時候需要在表名後添加"$"符號,Insert語句可以不指定列名

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"的內容,訪問Excel的表的時候需要在表名後添加"$"符號

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

遍歷Schema的內容

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);

源碼下載:http://download.csdn.net/detail/testcs_dn/7328685

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved