c#資料集DataSet匯出Excel?

Tags: 資料, 專案, excel,

在.Net中資料已經查詢繫結到DataGridView,當有時想把顯示在DataGridView資料,需要匯出Excel,如何處理?以下把我在專案開發中使用方法介紹如下,希望對你有所幫助

工具/原料

開發環境Microsoft Visual Studio 2005

office 2003或其它版本

方法/步驟

開啟Microsoft Visual Studio 2005,新建一專案Test, 在專案下建一資料查詢窗體,如下:

c#資料集DataSet匯出Excel

資料集DataSet匯出Excel#

雙擊 <查詢> 進入button1_Click事件,編寫如下程式碼:

public partial class Form1 : Form

{

SqlConnection con;

SqlDataAdapter da;

DataSet ds=new DataSet();

string str_connection = "SERVER=.;DATABASE=ERP;UID=sa;PWD=sa";

public Form1()

{

InitializeComponent();

}

//訂單資料表Orders,資料查詢語句

string str_select = "select * from Orders";

private void button1_Click(object sender, EventArgs e)

{

try

{

//初始化清空資料集ds

ds.Clear();

con = new SqlConnection(str_connection);

//開啟資料連線

con.Open();

da = new SqlDataAdapter(str_select, con);

//填充資料集到ds

da.Fill(ds);

//繫結資料到DataGridView1

this.dataGridView1.DataSource = ds.Tables[0].DefaultView;

}

catch (Exception ex)

{

MessageBox.Show(ex.ToString());

}

finally

{

con.Close();

}

}

}

c#資料集DataSet匯出Excel

資料集DataSet匯出Excel#

在Test專案下新建一個類方法,命名為:ExportClass.cs,程式碼如下:

class ExportClass

{

///

/// DataSet資料集匯出到Excel

///

/// DataSet控制元件

/// 匯出的Excel標題

public void DataGridViewExportToExcel(DataSet ds, string strTitle)

{

SaveFileDialog saveFileDialog = new SaveFileDialog();

saveFileDialog.Filter = "Excel files (*.xls) *.xls";

saveFileDialog.FilterIndex = 0;

saveFileDialog.RestoreDirectory = true;

saveFileDialog.CreatePrompt = false;

saveFileDialog.FileName = strTitle + ".xls";

if (saveFileDialog.ShowDialog() == DialogResult.Cancel) //匯出時,點選【取消】按鈕

{

return;

}

Stream myStream = saveFileDialog.OpenFile();

StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));

string strHeaderText = "";

try

{

//寫標題

for (int i = 0; i < ds.Tables[0].Columns.Count; i++)

{

if (i > 0)

{

strHeaderText += "\t";

}

strHeaderText += ds.Tables[0].Columns[i].ToString();

}

sw.WriteLine(strHeaderText);

//寫內容

string strItemValue = "";

for (int j = 0; j < ds.Tables[0].Rows.Count; j++)

{

strItemValue = "";

for (int k = 0; k < ds.Tables[0].Columns.Count; k++)

{

if (k > 0)

{

strItemValue += "\t";

}

strItemValue += ds.Tables[0].Rows[j][k].ToString();

}

sw.WriteLine(strItemValue); //把dgv的每一行的資訊寫為sw的每一行

}

}

catch (Exception ex)

{

MessageBox.Show(ex.Message, "軟體提示");

throw ex;

}

finally

{

sw.Close();

myStream.Close();

}

}

}

c#資料集DataSet匯出Excel

資料集DataSet匯出Excel#

雙擊 <匯出當前資料到excel> 按鈕進入button2_Click事件,編寫程式碼如下:

//例項化匯出Excle類

ExportClass MyExcel_Class = new ExportClass();

//呼叫匯出方法

MyExcel_Class.DataGridViewExportToExcel(ds, "查詢匯出Excel");

c#資料集DataSet匯出Excel

資料集DataSet匯出Excel#

到此程式碼編寫完成,點Debug編譯執行程式碼或按功能健F5執行,彈出如下窗體。

c#資料集DataSet匯出Excel

資料集DataSet匯出Excel#

注意事項

宣告全域性變理資料ds,在查詢前記得先清空ds.clear(),否則會重疊查詢結果

資料, 專案, excel,
相關問題答案