2017-06-21 68 views
0

我想实现导出到Excel的功能。我通过我的整个表以HTML格式字符串输出功能,并试图将其转换到Excel中。以下是我已经实现MVC导出到Excel从HTML表中DIV

 [HttpPost] 
    public void ExportToExcel(ExportDataEntity data) 
    { 
     StringWriter sw = new StringWriter(); 
     sw.WriteLine(data.HtmlData); 
     System.Web.HttpContext.Current.Response.ClearContent(); 
     System.Web.HttpContext.Current.Response.Buffer = true; 
     System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=test.xls"); 
     System.Web.HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     System.Web.HttpContext.Current.Response.Charset = ""; 
       byte[] byteArray = Encoding.ASCII.GetBytes(sw.ToString()); 
     MemoryStream s = new MemoryStream(byteArray); 
     StreamReader sr = new StreamReader(s, Encoding.Unicode); 
     System.Web.HttpContext.Current.Response.Write(sr.ReadToEnd()); 
     System.Web.HttpContext.Current.Response.End(); 

    } 

下面的代码是我的实体类

public class ExportDataEntity 
{ 
    public string HtmlData { get; set; } 
    public string FileName { get; set; } 
    public string FileFormat { get; set; } 
} 

以下是表结构

<table border="1"> 
      <tbody> 
       <tr class="text-center"> 
        <th class="text-center" rowspan="2">Col1</th> 
        <th class="text-center" colspan="3">Col2</th> 
        <th class="text-center" colspan="3">Col3</th> 
        <th class="text-center" rowspan="2">Col4</th> 
        <th class="text-center" colspan="4">Col5</th> 
        <th class="text-center" colspan="6">Col6</th> 
       </tr> 
       <tr> 
        <td>SubCol21</td> 
        <td>SubCol22</td> 
        <td>SubCol23</td> 
        <td>SubCol31</td> 
        <td>SubCol32</td> 
        <td>SubCol33</td> 
        <td>SubCol51</td> 
        <td>SubCol52</td> 
        <td>SubCol53</td> 
        <td>SubCol54</td> 
        <td>SubCol61</td> 
        <td>SubCol62</td> 
        <td>SubCol63</td> 
        <td>SubCol64</td> 
        <td>SubCol65</td> 
        <td>SubCol66</td> 
       </tr> 
        <tr class="trData"> 
         <td>1</td> 
         <td>2</td> 
         <td>3</td> 
         <td>4</td> 
         <td>5</td> 
         <td>6</td> 
         <td>7</td> 
         <td>8</td> 
         <td>9</td> 
         <td>10</td> 
         <td>11</td> 
         <td>12</td> 
         <td>13</td> 
         <td>14</td> 
         <td>15</td> 
         <td>16</td> 
         <td>17</td> 
         <td>18</td> 
        </tr> 
       <tr> 
        <td>Count</td> 
        <td>1</td> 
        <td>2</td> 
        <td>3</td> 
        <td>4</td> 
        <td>5</td> 
        <td>6</td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td>7</td> 
        <td>8</td> 
        <td>9</td> 
        <td>10</td> 
        <td>11</td> 
        <td>12</td> 
       </tr> 
       <tr> 
        <td>Met %</td> 
        <td colspan="3">1</td> 
        <td colspan="3">2</td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td colspan="3">3</td> 
        <td colspan="3">4</td> 
       </tr> 
      </tbody> 
     </table> 

我打电话通过Ajax调用并通过整个的ExportToExcel功能html内的div(仅包含)。我没有在我的代码或浏览器窗口中看到任何错误。

我有很多Google搜索,并试图实现各种解决方案,但没有什么帮助了我。

请不要让我知道什么是我做了错误,也提供了实现它在MVC的最佳解决方案。

感谢

回答

0

嘿,如果你已经在前端的数据,那么你可以使用jQuery插件table2Excel直接导出表数据的Excel文件。你不需要调用任何服务器端代码: 下面是相同的例子:

<html> 
<head> 
<style> 
table, th, td { 
    border: 1px solid black; 
} 
</style> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script src="jquery.table2excel.js"></script> 
<script type="text/javascript"> 
     function exportToExcel() { 
      $("#tableData").table2excel({ 
       name: "Table2Excel", 
       filename: "myFileName", 
       fileext: ".xls" 
      }); 
     } 
</script> 

</head> 
<body> 


<table id="tableData" border="1"> 
      <tbody> 
       <tr class="text-center"> 
        <th class="text-center" rowspan="2">Col1</th> 
        <th class="text-center" colspan="3">Col2</th> 
        <th class="text-center" colspan="3">Col3</th> 
        <th class="text-center" rowspan="2">Col4</th> 
        <th class="text-center" colspan="4">Col5</th> 
        <th class="text-center" colspan="6">Col6</th> 
       </tr> 
       <tr> 
        <td>SubCol21</td> 
        <td>SubCol22</td> 
        <td>SubCol23</td> 
        <td>SubCol31</td> 
        <td>SubCol32</td> 
        <td>SubCol33</td> 
        <td>SubCol51</td> 
        <td>SubCol52</td> 
        <td>SubCol53</td> 
        <td>SubCol54</td> 
        <td>SubCol61</td> 
        <td>SubCol62</td> 
        <td>SubCol63</td> 
        <td>SubCol64</td> 
        <td>SubCol65</td> 
        <td>SubCol66</td> 
       </tr> 
        <tr class="trData"> 
         <td>1</td> 
         <td>2</td> 
         <td>3</td> 
         <td>4</td> 
         <td>5</td> 
         <td>6</td> 
         <td>7</td> 
         <td>8</td> 
         <td>9</td> 
         <td>10</td> 
         <td>11</td> 
         <td>12</td> 
         <td>13</td> 
         <td>14</td> 
         <td>15</td> 
         <td>16</td> 
         <td>17</td> 
         <td>18</td> 
        </tr> 
       <tr> 
        <td>Count</td> 
        <td>1</td> 
        <td>2</td> 
        <td>3</td> 
        <td>4</td> 
        <td>5</td> 
        <td>6</td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td>7</td> 
        <td>8</td> 
        <td>9</td> 
        <td>10</td> 
        <td>11</td> 
        <td>12</td> 
       </tr> 
       <tr> 
        <td>Met %</td> 
        <td colspan="3">1</td> 
        <td colspan="3">2</td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td></td> 
        <td colspan="3">3</td> 
        <td colspan="3">4</td> 
       </tr> 
      </tbody> 
     </table> 

<button onclick="exportToExcel()"> 
      Export to Excel</button> 


</body> 
</html> 

下面是输出到Excel: enter image description here

+0

感谢@Praveen,我已经尝试过的代码和它的工作原理,但随着出口的问题是,我的表有行宽和Col跨度,这是不正确出口。这就是我没有使用它的原因。如果有可能使用相同的方式实现它,请建议我,因为我已经尝试了谷歌它。 –

+0

@Aditya Pewekar嘿能否请您分享您的表的结构,这样我可以进一步帮助您。 –

+0

已更新有问题的结构。我已经实现了服务器端,但寻找一个通用的解决方案。 –