2010-12-15 22 views
2

Hat jemand eine Lösung/einen Link zum Kopieren von Inhalten einer GridView/Datatable (Webanwendung aspx) in die Zwischenablage, so dass ich in Excel einfügen kann?Kopieren von ASP.NET GridView in die Zwischenablage

Ich habe versucht, herum zu suchen, fand aber nur Lösungen für eine Forms-Anwendung.

+0

Viel Glück. Auch Google scheint das in Google Docs nicht richtig zu machen. Wenn Google mit seinen monströsen Budgets es nicht richtig machen kann, was denkst du, dass du es kannst? –

Antwort

1

Hier ist ein Code, der Ihnen hilft, die Daten einer Rasteransicht in die Zwischenablage zu kopieren, damit Sie sie in Excel einfügen können.

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

Es klingt wie Sie verwirrt über die gridview sind. Es hat nichts damit zu tun, was du beschreibst. Sie müssen google, wie man Daten exportiert, um mit C# zu übertreffen. Sie könnten einen Link oder eine Schaltfläche erstellen, die besagt, Excel-Datei herunterzuladen, und die Schaltfläche würde an Ihre C# -Methode gebunden sein. Wenn Sie diese Methode auf Ihrer Website verwenden, können Sie sie einmal erstellen und möglicherweise mithilfe eines Parameters herausfinden, welche Datenbanktabelle exportiert wird.

Ps.s. Wenn Sie mehr Funktionalität als die Gridview suchen, empfehle ich Ihnen, meine Antwort auf diesen Beitrag über die Erstellung Ihrer eigenen zu lesen. How to show pop up menu from database in gridview on each gridview row items?

Müssen Sie das unbedingt in die Zwischenablage kopieren? Es ist wahrscheinlich möglich, dies zu tun, aber würde viel Codierung nehmen. Sie sprechen darüber, Daten in mehrere Felder anstatt in ein Feld einzufügen. Ich stelle mir vor, Sie müssten eine Erweiterung für Excel erstellen, die wissen würde, dass die Daten aus der Zwischenablage aus der Datenbanktabelle stammen und herausfinden, wie das Blatt gefüllt wird.

Verwandte Themen