我正在尝试将JqGrid导出为excel,因此我按照this instruction进行操作,并在下面使用它。
var grid = new JqGridModelParticipiant().JqGridParticipiant;
var query = db.ReservationSet.Select(r => new
{
r.Id,
Name = r.Doctor.Name,
Identity = r.Doctor.Identity,
Title = r.Doctor.Title.Name,
Total = r.TotalTL,
Organization = r.Organization.Name
});
grid.ExportToExcel(query,"file.xls");
我在“grid.ExportToExcel(query,”file.xls“);”
的行中得到以下异常直接将数据绑定到商店查询(DbSet,DbQuery,DbSqlQuery) 不支持。而是使用数据填充DbSet,例如 在DbSet上调用Load,然后绑定到本地数据。对于WPF绑定 到DbSet.Local。对于WinForms绑定到DbSet.Local.ToBindingList()。
据我所知,它希望在DbSet.Local成员上有ObservableCollection。但我正在研究预测查询,所以我不能这样做。
这个问题的解决方案是什么。
答案 0 :(得分:1)
在the answer中,我发布了the demo,其中显示了如何实现导出到Excel(真正的* .XLSX文件,而不是将HTML片段重命名为* .XLS使用here)。
用于在jqSuite(the demo)中导出到Excel的方法生成HTML片段,如
HTTP/1.1 200 OK
Cache-Control: private
Content-Type: application/excel; charset=utf-8
Server: Microsoft-IIS/7.0
X-AspNetMvc-Version: 2.0
content-disposition: attachment; filename=grid.xls
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Fri, 29 Jun 2012 14:24:54 GMT
Connection: close
<table cellspacing="0" rules="all" border="1" id="_exportGrid" style="border-collapse:collapse;">
<tr>
<td>OrderID</td><td>CustomerID</td><td>OrderDate</td><td>Freight</td><td>ShipName</td>
</tr><tr>
<td>10248</td><td>VINET</td><td>1996/07/04</td><td>32.3800</td><td>Vins et alcools Chevalier</td>
</tr><tr>
<td>10249</td><td>TOMSP</td><td>1996/07/05</td><td>11.6100</td><td>Toms Spezialitäten</td>
</tr><tr>
<td>10250</td><td>HANAR</td><td>1996/07/08</td><td>65.8300</td><td>Hanari Carnes</td>
</tr><tr>
...
</table>
而不是创建真正的Excel文件。这种方式非常不安全,因为在开放时将始终使用“标准”类型的数据。例如,如果要导出数据,如
<td>10249</td><td>TOMSP</td><td>1996/07/05</td><td>11.02.12</td><td>Toms Spezialitäten</td>
如果默认使用德语区域设置,则文本“11.02.12”将自动转换为日期11.02.2012:
“TomsSpezialitäten”这个名称将错误地显示为“TomsSpezialitäten”。
在大型表格的情况下,网格中间的一些小部分数据将被错误转换,这可能会特别危险。在一个项目中,我显示了有关软件的信息,某些软件版本将被错误地转换为日期类型。
由于存在此类和其他严重问题,我使用Open XML SDK 2.5或Open XML SDK 2.0在服务器上创建了真实的Excel文件。一方面没有上述问题。因此,我建议您按照my old answer中描述的方法进行操作。