Есть ли у кого-нибудь решение / ссылка для копирования содержимого GridView / Datatable (aspx веб-приложения) в буфер обмена, чтобы я мог вставить его в Excel?
Я пробовал поискать, но нашел решения только для приложения Forms.
Есть ли у кого-нибудь решение / ссылка для копирования содержимого GridView / Datatable (aspx веб-приложения) в буфер обмена, чтобы я мог вставить его в Excel?
Я пробовал поискать, но нашел решения только для приложения Forms.
Вот код, который поможет вам, ребята, поместить данные представления сетки в буфер обмена, который позволяет вставлять их в 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>");
Единственный надежный способ скопировать материал в буфер обмена - использовать Flash Player. Вот начало:
http://beckelman.net/post/2009/01/22/Copy-to-Clipboard-with-ZeroClipboard-Flash-10-and-jQuery.aspx
Похоже, вы запутались в сетке. Это не имеет ничего общего с тем, что вы описываете. Вам нужно погуглить, как экспортировать данные в Excel с помощью C #. Вы можете создать ссылку или кнопку с надписью «Загрузить файл Excel», и эта кнопка будет привязана к вашему методу C #. Если вы используете этот метод на своем веб-сайте, вы можете сделать это один раз и, возможно, использовать параметр, чтобы выяснить, какую таблицу базы данных он экспортирует в Excel.
P.s. Если вы ищете больше функциональности, чем gridview, я предлагаю вам взглянуть на мой ответ на этот пост о создании собственного. Как отобразить всплывающее меню из базы данных в gridview для каждого элемента строки gridview?
Вам абсолютно необходимо скопировать это в буфер обмена? Вероятно, это возможно, но потребует много кода. Вы говорите о вставке данных в несколько полей, а не в одно поле. Я полагаю, вам нужно будет создать расширение для Excel, которое будет знать, что данные буфера обмена взяты из таблицы базы данных, и выяснять, как заполнить лист.