C# 操作Excel之旁门左道 [ C# | Excel ]
2009-05-25 08:29:10 来源:WEB开发网3.2 后台调取数据,导成excel并下载
这里就不连接数据库了,直接在程序里面模拟一些数据。
protected void Page_Load(object sender, EventArgs e)
{
this.EnableViewState = false;
//加载数据
LoadData();
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("学生成绩表.xls", System.Text.Encoding.UTF8));
Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
Response.ContentType = "application/ms-excel";
//Response.End();
}
private void LoadData()
{
IList<User> users = new List<User>();
//测试数据
users.Add(new User(1, "刘一", 81));
users.Add(new User(2, "陈二", 82));
users.Add(new User(3, "张三", 83));
users.Add(new User(4, "李四", 84));
users.Add(new User(5, "王五", 85));
users.Add(new User(6, "赵六", 86));
users.Add(new User(7, "孙七", 87));
users.Add(new User(8, "周八", 88));
users.Add(new User(9, "吴九", 89));
users.Add(new User(10, "郑十", 80));
rptData.DataSource = users;
rptData.DataBind();
}
[Serializable]
private class User
{
public User()
{
}
public User(int id, string name, decimal achievement)
{
this._id = id;
this._name = name;
this._achievement = achievement;
}
private int _id;
/// <summary>
/// 编号
/// </summary>
public int id
{
get { return _id; }
set { _id = value; }
}
private string _name;
/// <summary>
/// 姓名
/// </summary>
public string name
{
get { return _name; }
set { _name = value; }
}
private decimal _achievement;
/// <summary>
/// 成绩
/// </summary>
public decimal achievement
{
get { return _achievement; }
set { _achievement = value; }
}
}
代码说明:
Page_Load中依次加载数据,然后以ms-excel类型讲web浏览变成excel文件下载。
3.3 导出后的excel截图
3.3.1 下载
3.3.2 修改锁定的三列截图
图片看不清楚?请点击这里查看原图(大图)。
很明显,动态输出表格是我们擅长的,也不用你去翻N多N多的API了,最重要的是这里没有Excel进程!
三、下载
四、注意
1. 下载回来的excel如果直接在上面操作的话可能产生 [excel名称].files 文件夹。
结束
解决一个问题尽量多想多了解多找一些方案和方法,比较各个方案的优缺点,再选一种适合自己实际情况的来实现。
更多精彩
赞助商链接