编程经验:不依赖office组件的Excel简单导出
2013-06-13 14:34
387 查看
protected void btnDataOut_Click(object sender, EventArgs e)
{
DataToExcel dte = new DataToExcel();
DataTable dt = null;
if (sid > 0)
{
dt = Users.GetAuthUserListByGroupidList("8", sid.ToString());
}
else
{ dt = Users.GetAuthUserListByGroupid(8); }
UserInfo userInfo = new UserInfo();
if (dt.Rows.Count > 0)
{
dt = ChangeSchema(dt);
foreach (DataRow dr in dt.Rows)
{
userInfo = AdminUsers.GetUserInfo(Convert.ToInt32(dr["uid"].ToString().Trim()));
dr["realname"] = userInfo.Realname.ToString().Trim();
dr["mobile"] = userInfo.Mobile.ToString().Trim();
dr["organization"] = filterIds(dr["organization"].ToString().Trim());
dr["email"] = dr["email"].ToString().Trim();
dr["username"] = dr["username"].ToString().Trim();
if (dr["gender"].ToString() == "0") dr["gender"] = "男";
if (dr["gender"].ToString() == "1") dr["gender"] = "女";
}
}
for (int i = 0; i < dt.Columns.Count; )
{
if (dt.Columns[i].ColumnName.Contains("username") || dt.Columns[i].ColumnName.Contains("realname") || dt.Columns[i].ColumnName.Contains("mobile") || dt.Columns[i].ColumnName.Contains("gender") || dt.Columns[i].ColumnName == "email" || dt.Columns[i].ColumnName.Contains("organization"))
{ i++; }
else
{
dt.Columns.Remove(dt.Columns[i].ColumnName);
dt.AcceptChanges();
}
}
DataTable dtAuth = new DataTable();
dtAuth.Columns.Add("真实姓名", typeof(string));
dtAuth.Columns.Add("性别", typeof(string));
dtAuth.Columns.Add("用户名", typeof(string));
dtAuth.Columns.Add("手机号码", typeof(string));
dtAuth.Columns.Add("所属企业", typeof(string));
dtAuth.Columns.Add("E_mail", typeof(string));
foreach (DataRow dr in dt.Rows)
{
dtAuth.Rows.Add(new Object[] { dr["realname"], dr["gender"], dr["username"], dr["mobile"], dr["organization"], dr["email"] });
}
DataTable2Excel(dtAuth, "userinfo");
}
//dtData是要导出为Excel的DataTable,FileName是要导出的Excel文件名(不加.xls)
private void DataTable2Excel(System.Data.DataTable dtData, String FileName)
{
System.Web.UI.WebControls.GridView dgExport = null;
//当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (dtData != null)
{
//设置编码和附件格式
//System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
curContext.Response.Charset = "GB2312";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.ContentType = "application nd.ms-excel";
//导出Excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
//下载到客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
{
DataToExcel dte = new DataToExcel();
DataTable dt = null;
if (sid > 0)
{
dt = Users.GetAuthUserListByGroupidList("8", sid.ToString());
}
else
{ dt = Users.GetAuthUserListByGroupid(8); }
UserInfo userInfo = new UserInfo();
if (dt.Rows.Count > 0)
{
dt = ChangeSchema(dt);
foreach (DataRow dr in dt.Rows)
{
userInfo = AdminUsers.GetUserInfo(Convert.ToInt32(dr["uid"].ToString().Trim()));
dr["realname"] = userInfo.Realname.ToString().Trim();
dr["mobile"] = userInfo.Mobile.ToString().Trim();
dr["organization"] = filterIds(dr["organization"].ToString().Trim());
dr["email"] = dr["email"].ToString().Trim();
dr["username"] = dr["username"].ToString().Trim();
if (dr["gender"].ToString() == "0") dr["gender"] = "男";
if (dr["gender"].ToString() == "1") dr["gender"] = "女";
}
}
for (int i = 0; i < dt.Columns.Count; )
{
if (dt.Columns[i].ColumnName.Contains("username") || dt.Columns[i].ColumnName.Contains("realname") || dt.Columns[i].ColumnName.Contains("mobile") || dt.Columns[i].ColumnName.Contains("gender") || dt.Columns[i].ColumnName == "email" || dt.Columns[i].ColumnName.Contains("organization"))
{ i++; }
else
{
dt.Columns.Remove(dt.Columns[i].ColumnName);
dt.AcceptChanges();
}
}
DataTable dtAuth = new DataTable();
dtAuth.Columns.Add("真实姓名", typeof(string));
dtAuth.Columns.Add("性别", typeof(string));
dtAuth.Columns.Add("用户名", typeof(string));
dtAuth.Columns.Add("手机号码", typeof(string));
dtAuth.Columns.Add("所属企业", typeof(string));
dtAuth.Columns.Add("E_mail", typeof(string));
foreach (DataRow dr in dt.Rows)
{
dtAuth.Rows.Add(new Object[] { dr["realname"], dr["gender"], dr["username"], dr["mobile"], dr["organization"], dr["email"] });
}
DataTable2Excel(dtAuth, "userinfo");
}
//dtData是要导出为Excel的DataTable,FileName是要导出的Excel文件名(不加.xls)
private void DataTable2Excel(System.Data.DataTable dtData, String FileName)
{
System.Web.UI.WebControls.GridView dgExport = null;
//当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null;
if (dtData != null)
{
//设置编码和附件格式
//System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
curContext.Response.Charset = "GB2312";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.ContentType = "application nd.ms-excel";
//导出Excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter);
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind();
//下载到客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write(strWriter.ToString());
curContext.Response.End();
}
}
相关文章推荐
- 不依赖OFFICE组件实现带图片的EXCEL导出
- Python office编程:利用xlrd模块读取并简单操作Excel文档
- ASP 使用office组件导出excel时乱码
- asp.net下导出excel导出控件MyXls,不依赖微软组件,底层二进制读写
- office组件导出excel问题
- ●导出excel(office组件)
- 关于编程操作office(word、excel等)
- NPOI导出Excel和基于office导出Excel表比较
- excel 导出,关于POI的使用经验
- 在Office编程(add-in)中如何获得当前Word/Excel的名字
- 导出Excel,检索 COM 类组件时失败,8000401a错误解决方法
- Qt导出Excel的简单实现
- DataGridView扩展方法行号、全选、导出到Excel(引用excel组件、生成html两种方式)
- NPOI导出Excel和基于office导出Excel比较
- 超级简单报表导出方案,如何用XML Publisher在eclipse中生成excel,pdf,html
- 真导出Excel功能实现(使用Gembox.Spreadsheet v2.9 组件)
- Excel导入导出组件的设计
- 让C# Excel导入导出,支持不同版本的Office
- asp.net导出数据到execl并保存到本地 不需要调用Office组件
- java web利用poi组件导出excel让用户自定义导出地址