Jquery导出表到csv隐藏表格单元格

时间:2015-12-11 16:05:10

标签: javascript c# jquery asp.net html-table

我需要能够将HTML表导出为CSV。我在某个地方发现了一个片段;它有效但不完全是我想要的。

在我的表格中(在小提琴中)我隐藏了字段,我只是使用快速的脏内联样式和内联onclicks来交换你看到的内容。

我想要的导出是它选择当前显示的表格。所以只有td' style="display:table-cell"。我知道如何在普通的JS中做到这一点。

    document.querySelectorAll('td[style="display:table-cell"])');

但是我如何使用exportTableToCSV函数中现有的代码呢?

(对不起,但小提琴中的文字是荷兰语,因为它是直播版的直接副本)。 小提琴: http://jsfiddle.net/5hfcjkdh/

2 个答案:

答案 0 :(得分:0)

在您的grabRow方法中,您可以使用jQuery's :visible selector过滤掉隐藏的表格单元格。以下是一个例子

function grabRow(i, row) {

    var $row = $(row);
    //for some reason $cols = $row.find('td') || $row.find('th') won't work...
    //Added :visisble to ignore hidden ones
    var $cols = $row.find('td:visible'); 
    if (!$cols.length) $cols = $row.find('th:visible');

    return $cols.map(grabCol)
                            .get().join(tmpColDelim);
}

答案 1 :(得分:0)

这是我如何解决它的。决定退出纯粹的JavaScript解决方案,以减轻客户端的处理压力,而不是处理服务器端。

因为我已经使用存储过程从数据库中获取数据,所以我使用它来再次获取数据集并将其转换为ViewExportModel,因此我有一个TotalViewExport和一些修剪后的变体(重用其中大部分)基于a选定的变量i填写不同的模型。

添加到excisting show函数以更新Selected变量以跟踪当前选定的视图。

当用户单击Export table to excel时,它会调用当前页面的控制器IE。 AlarmReport(所以AlarmReportController)和我创建了动作ExportReports(int?SelectedView);

此外,我还添加了CsvExport作为经理。这需要数据结果(所以c#models / iqueryables / lists / etc)。并将它们放入Csv集中。使用返回类型BinaryContent可以使用此数据导出.csv文件。

操作ExportReports使用selectedview参数调用存储过程。结果被泵入正确的模型。此模型作为行输入CsvExport模型。

文件名基于所选视图+选择了什么对象+当前日期(yyyy-MM-dd)。例如" Total_Dolfinarium_2016-05-13"。让

最后,该操作使用BinsContent Returntype和CsvExport中的ExportToBytes将.csv文件作为下载返回

此操作的导出部分是这样编程的(缩短为保留一些检查,如选择了多个对象等)(数据和对象名称预先收到):

public ActionResult ExportCsv(CsvExport Data, string ObjectName, string Type){
   var FileName = Type + "_" + ObjectName + "_" + DateTime.Now.ToString("yyyy/MM/dd");
    return BinaryContent("text/csv", FileName + ".csv", Data.ExportToBytes());

}