如何将datagridview中的数据导入到excel文件中?

开发环境是visual studio 2005。在做开发的时候,经常会遇到数据导出到excel文件中的问题。以往自己也试着写过,结果总是出那样这样的问题。现在我把问题提出来,喜欢各位经验丰富的大哥大姐们,把你们如何实现数据导出的代码推荐一下。谢谢!!!开发语言是c#,应用windows应用程序编程的,web编程的都可以。还有如果datagridview中的一列是长类型的日期字符串,在导出到excel文件时,如何保证对应的文件的那列足够宽,不用用户自行调节宽度,就可以自己打印。该怎么实现?谢谢!!!!
还有一个小问题,就是在程序中写下面这句代码
Excel.Application excel = new Excel.Application();
编译时,编译器提示找不到Excel类型,要成功编译这句代码,应引入那个命名空间和参照引用那些.dll文件(编译环境visual studio 2005)

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="test1021_excel_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body style="text-align: center">
<form id="form1" runat="server" >
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="id"
DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False" ReadOnly="True"
SortExpression="id" />
<asp:BoundField DataField="name" HeaderText="name" SortExpression="name" />
<asp:BoundField DataField="pass" HeaderText="pass" SortExpression="pass" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:testConnectionString %>"
SelectCommand="SELECT * FROM [users]"></asp:SqlDataSource>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div>
</form>
</body>
</html>

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;

public partial class test1021_excel_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void Button1_Click(object sender, EventArgs e)
{
Excl("application/ms-excel", "aaa.txt");
}
private void Excl(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF7;
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);
Response.Write(tw.ToString());
Response.End();
}

public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}
}
aspx和axpx。cs文件 我留的范例 你改成你的自己的数据源就能用了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-30
//点击当入到excel 按钮事件
protected void Button1_Click(object sender, EventArgs e)
{
ExportToExcel("application/ms-excel", "赢利大幅度提高统计.xls");

}
//将数据导入到Excel 中
public void ExportToExcel(string FileType, string FileName)
{
Response.Charset = "GB2312";
Response.ContentEncoding = System.Text.Encoding.UTF8;
//将http流添加到数据流
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8).ToString());
Response.ContentType = FileType;
this.EnableViewState = false;
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
GridView1.RenderControl(hw);// 将控件内容写到服务器控件流中
Response.Write(tw.ToString());
Response.End();

}
//这个方法是必要的
public override void VerifyRenderingInServerForm(Control control)
{
//base.VerifyRenderingInServerForm(control);
}

试试看吧
第2个回答  2009-10-30
可以考虑一下使用第三方控件嘛,操作excel,不管是生成,修改还是其它什么,使用MyXls非常的不错的.向你推荐一下.
相似回答