Excel ComponentArt:导出网格数据
我需要将ComponentArt网格中的内容导出到文件中,最好是csv格式的excel 我想知道是否有人知道如何最好地完成这项任务。目前,我们已经用数据填充了网格,并且在向用户显示之前,正在使用客户端模板执行一些小的操作 应用的模板示例如下:Excel ComponentArt:导出网格数据,excel,templates,grid,export,componentart,Excel,Templates,Grid,Export,Componentart,我需要将ComponentArt网格中的内容导出到文件中,最好是csv格式的excel 我想知道是否有人知道如何最好地完成这项任务。目前,我们已经用数据填充了网格,并且在向用户显示之前,正在使用客户端模板执行一些小的操作 应用的模板示例如下: <ComponentArt:ClientTemplate Id="PostTemplate"> ## DataItem.GetMember("LastPostBy").Value ##<br />## DataItem.Get
<ComponentArt:ClientTemplate Id="PostTemplate">
## DataItem.GetMember("LastPostBy").Value ##<br />## DataItem.GetMember("LastPostDate").Value ##
</ComponentArt:ClientTemplate>
Where the column definitions are:
<ComponentArt:GridColumn Width="140" HeadingText="Last Post By " DataCellClientTemplateId="PostTemplate" />
<ComponentArt:GridColumn DataField="LastPostBy" Visible="false" />
<ComponentArt:GridColumn DataField="LastPostDate" Visible="false" />
##DataItem.GetMember(“LastPostBy”).Value##
###DataItem.GetMember(“LastPostDate”).Value##
其中列定义为:
因此,当导出网格时,我希望该文件包含导出时网格中的内容,包括任何可能可见的模板化更改
提前感谢您的帮助。我要做的是在用户控件.ascx文件中定义组件艺术控件(以及模板)。然后,可以使用以下小代码段将此控件呈现为字符串:
StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
{
theGrid.RenderControl(textWriter);
}
string gridContent = sb.ToString();
现在,您有了HTML格式的网格内容。从这里,假设组件艺术具有良好的良构标记,您可以考虑将HTML解析为XML,并将单元格值拉入CSV。
假设您希望允许用户通过浏览器保存CSV文件,您只需实现一个自定义http处理程序,该处理程序呈现控件,创建CSV,然后将其作为“text/CSV”发送到浏览器中。您无法使用RenderControl将Web.UI网格直接导出到文本编写器中。相反,您应该将其数据转换为另一种形式(如ASP DataGrid)并将其导出 这背后的原因是Web.UI网格的结构是在客户机上动态构建的——它作为一组XML和数组数据从服务器传递到客户机,这些数据被转换为您在窗口中看到的表和div 因此,您需要在网格的数据源上执行导出,然后分析客户机模板,以复制在客户机上动态构建时会发生的更改 以下是如何将CA网格导出到excel的简短示例:
public void ExportDataSetToExcel() {
object theColl = gridEmployee.DataSource; //just set this as your grid's datasource.
GridView excelGrid = new GridView();
excelGrid.DataSource = theColl;
excelGrid.ID = "Export";
excelGrid.DataBind();
excelGrid.AutoGenerateColumns = true;
Response.Clear();
Response.Buffer = true;
Response.ContentType = "application/vnd.ms-excel";
Response.AddHeader("content-disposition", "attachment;filename=RegainExport.xls");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
System.IO.StringWriter stringWrite = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
excelGrid.RenderControl(htmlWrite);
Response.Write(stringWrite.ToString());
Response.End();
}
因此,在绑定GridView的数据源之前,您需要执行ClientTemplate复制。遗憾的是,这不起作用。这是我尝试的第一件事,因为这将是我导出常规网格控件的方式。你是说CA网格没有呈现正确的HTML吗?那么,您唯一的选择可能是将网格模板中的转换复制到另一个更容易从该链接复制的区域: