2010-12-15 55 views
2

有沒有人有解決方案/鏈接將GridView/Datatable(web應用程序aspx)的內容複製到剪貼板,以便我可以粘貼到Excel中?如何將ASP.NET GridView複製到剪貼板

我已經嘗試過四處搜索,但只找到表單應用程序的解決方案。

+0

祝你好運。即使谷歌似乎也無法在Google文檔中正確使用。如果Google的鉅額預算無法正確預測,那麼您認爲自己能做什麼? – 2010-12-15 23:27:08

回答

1

下面是一些代碼來幫助你們了與把網格視圖的數據複製到剪貼板,它可以讓你粘貼到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>"); 
0

這聽起來像你感到困惑的GridView控件。它與你所描述的無關。你需要谷歌如何導出數據與C#優秀。你可以創建一個鏈接或按鈕,說下載excel文件,該按鈕將綁定到你的c#方法。如果您在整個網站中使用此方法,則可以創建一次,並可能使用一個參數來確定要將哪個數據庫表導出爲ex​​cel。

P.s.如果你正在尋找比gridview更多的功能,我建議你看看我對這篇文章的回答,關於創建你自己的。 How to show pop up menu from database in gridview on each gridview row items?

您是否絕對需要將其複製到剪貼板?這可能會做到這一點,但會花費很多代碼。您正在討論將數據粘貼到多個字段而不是一個字段中。我想你將不得不爲Excel創建一個擴展,以便知道剪貼板數據來自數據庫表並找出如何填充工作表。