在.Net中数据已经查询绑定到DataGridView,当有时想把显示在DataGridView数据,需要导出Excel,如何处理?以下把我在项目开发中使用方法介绍如下,希望对你有所帮助
前期准备工作(包括相关工具或所使用的原料等)
开发环境Microsoft Visual Studio 2005office 2003或其它版本详细的操作方法或具体步骤
打开Microsoft Visual Studio 2005,新建一项目Test, 在项目下建一数据查询窗体,如下:

双击<查询>进入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();
}
}
}

在Test项目下新建一个类方法,命名为:ExportClass.cs,代码如下:
class ExportClass
{
///
/// DataSet数据集导出到Excel
///
///
aram name="dgv">DataSet控件
///
aram name="strTitle">导出的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();
}
}
}

双击<导出当前数据到Excel>按钮进入button2_Click事件,编写代码如下:
//实例化导出Excle类
ExportClass MyExcel_Class=new ExportClass();
//调用导出方法
MyExcel_Class.DataGridViewExportToExcel(ds, "查询导出Excel");

到此代码编写完成,点Debug编译运行代码或按功能健F5运行,弹出如下窗体。

注意事项
声明全局变理数据ds,在查询前记得先清空ds.clear(),否则会重叠查询结果经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
