在.Net中資料已經查詢繫結到DataGridView,當有時想把顯示在DataGridView資料,需要匯出Excel,如何處理?以下把我在專案開發中使用方法介紹如下,希望對你有所幫助
工具/原料
開發環境Microsoft Visual Studio 2005
office 2003或其它版本
方法/步驟
開啟Microsoft Visual Studio 2005,新建一專案Test, 在專案下建一資料查詢窗體,如下:
資料集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();
}
}
}
資料集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();
}
}
}
資料集DataSet匯出Excel#
雙擊
<匯出當前資料到excel>
按鈕進入button2_Click事件,編寫程式碼如下:
匯出當前資料到excel>
//例項化匯出Excle類
ExportClass MyExcel_Class = new ExportClass();
//呼叫匯出方法
MyExcel_Class.DataGridViewExportToExcel(ds, "查詢匯出Excel");
資料集DataSet匯出Excel#
到此程式碼編寫完成,點Debug編譯執行程式碼或按功能健F5執行,彈出如下窗體。
資料集DataSet匯出Excel#
注意事項
宣告全域性變理資料ds,在查詢前記得先清空ds.clear(),否則會重疊查詢結果