C# 如何将ASP.NET GridView复制到剪贴板

C# 如何将ASP.NET GridView复制到剪贴板,c#,asp.net,gridview,clipboard,C#,Asp.net,Gridview,Clipboard,是否有人有将GridView/Datatable(web应用程序aspx)的内容复制到剪贴板的解决方案/链接,以便我可以粘贴到Excel中 我尝试过四处搜索,但只找到了表单应用程序的解决方案。将内容复制到剪贴板的唯一可靠方法是使用Flash Player。这是一个开始: 听起来您对gridview感到困惑。这与你所描述的无关。你需要用谷歌搜索如何用C#将数据导出到excel。你可以创建一个链接或按钮,上面写着下载excel文件,这个按钮将绑定到你的c#方法。如果您在整个网站上使用此方法,您可以一

是否有人有将GridView/Datatable(web应用程序aspx)的内容复制到剪贴板的解决方案/链接,以便我可以粘贴到Excel中


我尝试过四处搜索,但只找到了表单应用程序的解决方案。

将内容复制到剪贴板的唯一可靠方法是使用Flash Player。这是一个开始:


听起来您对gridview感到困惑。这与你所描述的无关。你需要用谷歌搜索如何用C#将数据导出到excel。你可以创建一个链接或按钮,上面写着下载excel文件,这个按钮将绑定到你的c#方法。如果您在整个网站上使用此方法,您可以一次性使用此方法,并可能使用一个参数来确定要导出到excel的数据库表

另外,如果你想获得比gridview更多的功能,我建议你看看我对这篇关于创建你自己的功能的帖子的回答


你真的需要把它复制到剪贴板上吗?这可能是可行的,但需要大量的编码。您所说的是将数据粘贴到多个字段中,而不是一个字段中。我想您必须为excel创建一个扩展,该扩展将知道剪贴板数据来自数据库表,并确定如何填充该工作表。

以下是一些代码,可以帮助您将网格视图的数据放入剪贴板,从而可以粘贴到excel中

ClientScriptManager csm;
StringBuilder sb;
string stringToAppend;
int currentPage;

csm = Page.ClientScript;
sb = new StringBuilder();

// headers
foreach (DataControlField dcf in gvClass.Columns)
{
    sb.Append(dcf.HeaderText + "\t");
}

sb.Append("\\n");
currentPage = gvClass.PageIndex;

for (int i = 0; i < gvClass.PageCount; i++)
{
    gvClass_PageIndexChanging(null, new GridViewPageEventArgs(i));

    foreach (GridViewRow gvr in gvClass.Rows)
    {
        foreach (TableCell tc in gvr.Cells)
        {
            if (tc.Controls.Count > 0)
            {
                stringToAppend = ((LinkButton)tc.Controls[0]).Text;
                sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend) + " \t");
            }
            else
            {
                stringToAppend = tc.Text;
                sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend) + " \t");
            }   
        }
        sb.Append("\\n");
    }
}

gvClass_PageIndexChanging(null, new GridViewPageEventArgs(currentPage));

// Javascript that sets the clipboard to the stringbuilders value
csm.RegisterClientScriptBlock(typeof(Page), "copy",
"<script language=\"javascript\" type=\"text/javascript\"> " +
"window.clipboardData.setData(\"Text\", \"" + sb.ToString() + "\"); " +
"</script>");
ClientScriptManager-csm;
为某人做准备;
要出现的字符串;
int当前页面;
csm=Page.ClientScript;
sb=新的StringBuilder();
//标题
foreach(gvClass.Columns中的DataControlField dcf)
{
sb.追加(dcf.HeaderText+“\t”);
}
某人附加(\\n);
currentPage=gvClass.PageIndex;
对于(int i=0;i0)
{
stringToAppend=((LinkButton)tc.Controls[0]).Text;
sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend)+“\t”);
}
其他的
{
stringToAppend=tc.Text;
sb.Append(PRTL_UtilityPackage.FormatHtmlCharacters(stringToAppend)+“\t”);
}   
}
某人附加(\\n);
}
}
gvClass_PageIndexChanging(null,新GridViewPageEventArgs(currentPage));
//将剪贴板设置为stringbuilders值的Javascript
csm.RegisterClientScriptBlock(类型(第页),“副本”,
" " +
window.clipboardData.setData(\'Text\',\''+sb.ToString()+“\”)+
"");

祝你好运。即使是谷歌似乎也无法在谷歌文档中做到这一点。如果有着庞大预算的谷歌不能做到这一点,你凭什么认为你能做到?