Aspx中的列表数据的导出
☻ 列表页面中的导出按钮HTML代码
<div class="span6">
<!--操作-->
<div class="pull-right">
<asp:LinkButton ID="lbExport" runat="server" OnClick="lbExport_Click">
<span>
<img alt="" runat="server" id="img1" src="../../Statics/images/icon_tool_101.gif"
style="border: 0px" />导出 </span>
</asp:LinkButton>
</div>
</div>
☻导出Excel文件的抽象类 AbstractExecl.cs ——注意需要引入 using Bingosoft.Excel 命名空间;
public abstract class AbstractExecl
{
public DataTable exceldsource; //查询数据库所得到的数据
public string mappath; //Excel文件模板路径
public string sheetname; //Excel文件的工作薄sheet页
public int rowstarindex; //写入Excel文件的从哪行开始
public AbstractExecl()
{
}
public AbstractExecl(DataTable _exceldsource, string _mappath, string _sheetname, int _rowstarindex)
{
exceldsource = _exceldsource;
mappath = _mappath;
sheetname = _sheetname;
rowstarindex = _rowstarindex;
}
public virtual MemoryStream BuildExcel()
{
MemoryStream memorystream = new MemoryStream();
ExcelFile exFile = new ExcelFile();
exFile.LoadXls(mappath);
int cellindex = 0;
string value = string.Empty;
ExcelWorksheet eWorkSheet = exFile.Worksheets[sheetname];
for (int i = 0; i < exceldsource.Rows.Count; i++)
{
for (int j = 0; j < exceldsource.Columns.Count; j++)
{
cellindex = j;
value = Convert.ToString(exceldsource.Rows[i][j]);
if (!string.IsNullOrEmpty(value))
{
eWorkSheet.Rows[rowstarindex].Cells[cellindex].Value = value;
}
eWorkSheet.Rows[rowstarindex].Cells[cellindex].Style.HorizontalAlignment = HorizontalAlignmentStyle.Left;
eWorkSheet.Rows[rowstarindex].Style.VerticalAlignment = VerticalAlignmentStyle.Center;
eWorkSheet.Rows[rowstarindex].Style.WrapText = false;
eWorkSheet.Rows[rowstarindex].Cells[cellindex].Style.Borders.SetBorders(MultipleBorders.Outside, System.Drawing.Color.Black, LineStyle.Thin);
}
rowstarindex++;
}
exFile.SaveXls(memorystream);
return memorystream;
}
public virtual string ExportDataTable(System.Web.HttpResponse response, string exportexeclfilename, ref MemoryStream memorystream)
{
if (memorystream != null)
{
try
{
//输出Excel
response.Clear(); //先是清空输出流中的其他
response.Charset = "UTF-8"; //指定输出编码
response.ContentType = "application/vnd.ms-excel"; //指定输出类型
string fileName = string.Format("{0}({1})", exportexeclfilename, DateTime.Now.ToString("yyyy-MM-dd")); //指定输出的文件名
//给浏览器添加这样的报文头,对浏览器来说是提供下载
response.AppendHeader("content-disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8) + ".xls\"");
response.BinaryWrite(memorystream.GetBuffer()); //将内存流中的数据以二进制数据输出
response.Flush(); //输出缓冲区中的内容
response.End();//输出结束
return null;
}
catch (Exception ex)
{
return "导出失败,请稍候再试或请联系系统管理员!";
}
}
else
{
return "没有可导出的数据。";
}
}
}
☻导出Excel文件的子类
public class AcceptExcel: AbstractExecl
{
public AcceptExcel()
: base()
{ }
public AcceptExcel(DataTable _exceldsource, string _mappath, string _sheetname, int _rowstarindex)
: base(_exceldsource, _mappath, _sheetname, _rowstarindex)
{
}
public override System.IO.MemoryStream BuildExcel()
{
return base.BuildExcel();
}
public override string ExportDataTable(System.Web.HttpResponse response, string exportexeclfilename, ref System.IO.MemoryStream memorystream)
{
return base.ExportDataTable(response, exportexeclfilename, ref memorystream);
}
}
☻导出Excel文件的页面后台文件中的执行代码
public partial class AcceptList : System.Web.UI.Page
{
private SupAcceptService _acceptservice;
private SupAcceptService acceptservice
{
get
{
return _acceptservice ??
(_acceptservice = ObjectHelper.GetObject<SupAcceptService>());
}
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{ }
}
protected void DeleteAccept(object sender, EventArgs e)
{
ImageButton img = (ImageButton)sender;
string YWLSH = img.Attributes["_KeyId"];
string SJBBH = img.Attributes["_SJBBH"];
this.acceptservice.DeleteAccept(YWLSH, Convert.ToInt32(SJBBH));
this.GridSearch.Refresh();
}
protected void lbExport_Click(object sender, EventArgs e)
{
DataTable datatable = new DataTable();
SupAcceptService se = new SupAcceptService();
datatable = se.GetAccept(SmartDataSource1.SelectCommand);
datatable.Columns.Remove("BYZDA");
datatable.Columns.Remove("BYZDB");
datatable.Columns.Remove("BYZDC");
datatable.Columns.Remove("BYZDD");
datatable.AcceptChanges();
string path = System.Web.HttpContext.Current.Server.MapPath("~\\Modules\\Excel\\受理.xls");
MemoryStream ms = new MemoryStream();
AcceptExcel excel = new AcceptExcel(datatable, path, "受理", 1);
ms = excel.BuildExcel();
string message = excel.ExportDataTable(Response, "受理", ref ms);
ScriptHelper.Alert(this.Page, message);
}
protected void DeleteAccepts(object sender, EventArgs e)
{
string[] RegisterIDs = SmartGridView1.GetCheckedValues();
foreach (string RegisterID in RegisterIDs)
{
this.acceptservice.DeleteAccept(RegisterID,0);
}
this.GridSearch.Refresh();
}
protected void SearchGrid(object sender, EventArgs e)
{
this.GridSearch.Search();
}
protected void RefreshGrid(object sender, EventArgs e)
{
this.GridSearch.Refresh();
}
}

浙公网安备 33010602011771号