2010-12-15 2 views
2

У кого-нибудь есть решение/ссылка для копирования содержимого GridView/Datatable (веб-приложения aspx) в буфер обмена, чтобы я мог вставлять внутри Excel?Как скопировать копию ASP.NET GridView в буфер обмена

Я пробовал искать, но нашел решения для приложения Forms.

+0

Удачи. Даже Google не может показаться, что это правильно в Документах 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. Это не имеет никакого отношения к тому, что вы описываете. Вам нужно google как экспортировать данные в Excel с помощью C#. Вы можете создать ссылку или кнопку, в которой говорится, что файл загрузок Excel, и кнопка будет привязана к вашему методу C#. Если вы используете этот метод на своем веб-сайте, вы можете сделать его один раз и, возможно, использовать параметр, чтобы выяснить, какую таблицу базы данных он экспортирует в excel.

P.s. Если вы ищете больше функциональности, чем gridview, я предлагаю вам взглянуть на мой ответ на этот пост о создании собственного. How to show pop up menu from database in gridview on each gridview row items?

Вам абсолютно необходимо скопировать это в буфер обмена? Возможно, это возможно, но потребуется много кодирования. Вы говорите о вставке данных в несколько полей, а не в одно поле. Я предполагаю, что вам нужно будет создать расширение для excel, которое будет знать, что данные буфера обмена из таблицы базы данных и выяснить, как заполнить лист.