码迷,mamicode.com
首页 > Web开发 > 详细

.net Excel文档 的导出

时间:2015-06-29 22:11:33      阅读:5702      评论:0      收藏:0      [点我收藏+]

标签:

printAddressList.aspx :

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

<!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>

<script language="javascript" type="text/javascript">

function btnExport_onclick() {
hideIframe.location.href = "/Web/handler/ExportXlsHandler.ashx?temp=" + (new Date()).getTime();
}


</script>
</head>
<body>
<form id="form1" runat="server">
<div>

<input id="btnExport" type="button" value="导出通讯录" onclick="return btnExport_onclick()" /><br />
<asp:GridView ID="GridView1" runat="server" AllowPaging="True"
AutoGenerateColumns="False" BackColor="White" BorderColor="#3366CC"
BorderStyle="None" BorderWidth="1px" CellPadding="4" DataSourceID="odsUserInfo"
Width="572px">
<RowStyle BackColor="White" ForeColor="#003399" />
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
<asp:BoundField DataField="DutyInfoNo" HeaderText="DutyInfoNo"
SortExpression="DutyInfoNo" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Mobile" HeaderText="Mobile"
SortExpression="Mobile" />
<asp:BoundField DataField="QQ" HeaderText="QQ" SortExpression="QQ" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
<asp:BoundField DataField="DeptInfoNo" HeaderText="DeptInfoNo"
SortExpression="DeptInfoNo" />
</Columns>
<FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
<PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView>
<asp:ObjectDataSource ID="odsUserInfo" runat="server"
SelectMethod="GetUserInfo" TypeName="ExtOA.Biz.UserInfoBiz">
</asp:ObjectDataSource>

</div>
<iframe name="hideIframe" id="hideIframe" src="" width="0" height="0" scrolling="no" frameborder="0" style="display:none"></iframe>
</form>
</body>
</html>

 

ExportXlsHandler.ashx :

<%@ WebHandler Language="C#" Class="ExportXlsHandler" %>
using System;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.IO;
using System.Text;
using System.Web;
using System.Web.SessionState; // 要使用 Session 必需加入此命名空间
using System.Web.Configuration;
using System.Collections.Generic;
using ExtOA.Biz;
using ExtOA.Ent;

public class ExportXlsHandler : IHttpHandler, IRequiresSessionState
{
string mErr = "", tp_title = "国讯教育员工通讯录", tfile = "", sfile = "", wpath = "";
string BranchName1 = (new BranchInfoBiz()).GetBranchInfoById(1).BranchName;
string BranchName2 = (new BranchInfoBiz()).GetBranchInfoById(2).BranchName;


/// <summary>
/// 保存数据(添加或修改数据)
/// </summary>
/// <param name="oledb_conn">conn</param>
/// <param name="sheetName">工作表名称</param>
/// <param name="type">insert|update</param>
private void SaveData(OleDbConnection oledb_conn, string sheetName, string type)
{

using (OleDbCommand oledb_command = new OleDbCommand())
{
string SqlString = "";

oledb_command.Connection = oledb_conn;

#region 更新‘通讯录名称’
SqlString = "Update [" + sheetName + "$] Set remark = @remark Where remark = ‘名称‘;";


oledb_command.CommandText = SqlString;
oledb_command.Parameters.Clear();
oledb_command.Parameters.AddWithValue("remark", string.Format("国讯教育通讯录({0})", sheetName));
oledb_command.ExecuteNonQuery();
#endregion

#region 更新‘制表日期’
SqlString = "Update [" + sheetName + "$] Set remark = @remark Where remark = ‘制表日期‘;";

oledb_command.CommandText = SqlString;
oledb_command.Parameters.Clear();
oledb_command.Parameters.AddWithValue("remark", "制表日期:" + DateTime.Now.ToString("yyyy/MM/dd"));
oledb_command.ExecuteNonQuery();
#endregion
IList<UserInfo> userInfos = (new UserInfoBiz()).GetUserInfoByDeptInfoId(1);//根据机构ID得到该机构所有员工列表
int index = 0;
foreach (UserInfo userInfo in userInfos)
{
index++;
if (type == "insert")
SqlString = "insert into [" + sheetName + "$](remark,depart,username,dutyname,mobile,qq,email) values(@remark, @depart, @username, @dutyname, @mobile, @qq,@email)";
else
SqlString = "Update [" + BranchName2 + "$] set remark = @remark,depart=@depart,username=@username,dutyname=@dutyname,mobile=@mobile,qq=@qq,email=@email where remark=‘" + index + "‘";
oledb_command.CommandText = SqlString;
oledb_command.Parameters.Clear();
oledb_command.Parameters.AddWithValue("remark", " " + index.ToString() + " ");
string DeptName = (new DepartInfoBiz()).GetDepartInfoById(userInfo.DeptInfoNo).DepartName;
oledb_command.Parameters.AddWithValue("depart", DeptName);
oledb_command.Parameters.AddWithValue("username", userInfo.UserName);
string dutyName = (new DutyInfoBiz()).GetDutyInfoById(userInfo.DutyInfoNo).DutyName.Split(‘-‘)[1];
oledb_command.Parameters.AddWithValue("dutyname", dutyName);
oledb_command.Parameters.AddWithValue("mobile", userInfo.Mobile);
oledb_command.Parameters.AddWithValue("qq", userInfo.QQ);
oledb_command.Parameters.AddWithValue("email", userInfo.Email);

oledb_command.ExecuteNonQuery();
}
}
}

public void ProcessRequest(HttpContext context)
{
#region 复制 Excel 文件,以解决共用问题
wpath = context.Server.MapPath("~/xls/Default/");
sfile = wpath + "addresstemplate.xls";

wpath = context.Server.MapPath("~/xls/Excel/");
tfile = wpath + string.Format("国讯教育员工通讯录({0}{1}).xls", DateTime.Now.Year.ToString("D2"), DateTime.Now.Month.ToString("D2"));

File.Delete(tfile);
if (File.Exists(tfile))
mErr = "文件无法创建!\\n";
else
File.Copy(sfile, tfile, true);
#endregion

#region 打开新的 Excel 文件
if (mErr == "")
{

// Excel的第一列为字段名称
string xls_conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
+ tfile + ";Extended Properties=\"Excel 8.0;HDR=YES\"";

// Excel的第一列没有字段名称
// string xls_conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + tfile + ";Extended Properties=\"Excel 8.0;HDR=NO\"";

using (OleDbConnection oledb_conn = new OleDbConnection(xls_conn))
{
oledb_conn.Open();
SaveData(oledb_conn,BranchName1,"insert");//对上海校区进行操作
SaveData(oledb_conn,BranchName2,"update"); //对北京校区进行操作
oledb_conn.Close();
string filename = string.Format("../xls/Excel/国讯教育员工通讯录({0}{1}).xls", DateTime.Now.Year.ToString("D2"), DateTime.Now.Month.ToString("D2"));
context.Response.Redirect(filename + "?xtemp=" + DateTime.Now.ToString("HHmmss"));

}
#endregion

if (mErr != "")
{
// 设置输出格式
context.Response.ContentType = "text/html";
context.Response.Write("<script type=\"text/javascript\">alert(\"" + mErr + "\");/script>");
context.Response.End();
}

}
}
public bool IsReusable {
get {
return false;
}
}

 

}

 

.net Excel文档 的导出

标签:

原文地址:http://www.cnblogs.com/dlf-myDream/p/4608492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!