Функция экспорта в Excel не работает - PullRequest
0 голосов
/ 10 мая 2011

Somsone рекомендовал использовать эту функцию для экспорта моей таблицы данных, чтобы преуспеть, но он экспортирует HTML, а не только данные в таблице.Как я могу заставить его экспортировать данные и только форматирование (ширину, цвет ...)?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script>
function ExportHTMLTableToExcel()
{
   var thisTable = document.getElementById("table").innerHTML;
   window.clipboardData.setData("Text", thisTable);
   var objExcel = new ActiveXObject ("Excel.Application");
   objExcel.visible = true;

   var objWorkbook = objExcel.Workbooks.Add;
   var objWorksheet = objWorkbook.Worksheets(1);
   objWorksheet.Paste;
   alert('test');

}
</script>
  <title>Java Friends</title>
</head>
<body>
  <table id="table" style="font-weight: bold">
    <tr style="background-color:red"><td>a</td><td>b</td></tr>
    <tr><td>1</td><td>2</td></tr>
    <tr>
      <td colspan="2">
        <button onclick="ExportHTMLTableToExcel()">
            Get as Excel spreadsheet
        </button>
      </td>
    </tr>
  </table>    
</body>
</html>

Примечание: эта функция работает только в IE, если параметры безопасности download unsigned activex control и download signed activex controlустановите «enable»

Ответы [ 2 ]

1 голос
/ 15 марта 2013

Пожалуйста, используйте этот код, он отлично работает для меня

public void ExportToSpreadsheet(DataTable table, string name)
        {
            try
            {
                HttpContext context = HttpContext.Current;
                context.Response.Clear();
                context.Response.ClearHeaders();
                String sr = string.Empty;
                sr += "<html><body><table>";
                sr += "<tr style=\"background-color:gray;color:white;\">";
                foreach (DataColumn column in table.Columns)
                {
                    sr += "<th>";
                    sr += column.ColumnName;
                    sr += "</th>";
                }
                sr += "</tr>";
                sr += Environment.NewLine;
                foreach (DataRow row in table.Rows)
                {
                    sr += "<tr>";
                    for (int i = 0; i < table.Columns.Count; i++)
                    {
                        sr += "<td>";
                        sr += row.ItemArray[i];
                        sr += "</td>";
                    }
                    sr += "</tr>";
                    sr += Environment.NewLine;
                }
                sr += "</table></body></html>";               
                context.Response.ContentType = "application/vnd.ms-excel";               
                context.Response.AddHeader("Content-Disposition", "attachment; filename=" + name + ".xls");                        
                context.Response.Write(sr);
                context.Response.Flush();
                context.Response.End();
                context.Response.Close();
            }
            catch (Exception ex)
            {

            }
        }

Надеюсь, эта помощь.

0 голосов
/ 10 мая 2011

Плагин jQuery DataTables TableTools позволит вам очень легко экспортировать таблицу HTML в Excel, но он не будет обрабатывать форматирование.

Вы можете увидеть пример запуска плагина здесь: http://www.datatables.net/extras/tabletools/

Может не обрабатывать форматирование, но делает экспорт таблицы HTML очень простым.

Если форматирование абсолютно необходимо, вам нужно будет отправить данные обратно на сервер, а затем заставить сервер обрабатывать HTML-код в Excel. Если вы используете ASP.net, то сделать это довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...