从html导出到.csv

从html导出到.csv,html,model-view-controller,Html,Model View Controller,我想将html页面中的表导出为.csv文件。我可以使用类似于: private void GenerateExcelFileOnType(string filePath1, ref DataTable dt) { if (dt != null) { string line = string.Empty; if (dt.Rows.Count > 0)

我想将html页面中的表导出为.csv文件。我可以使用类似于:

private void GenerateExcelFileOnType(string filePath1, ref DataTable dt)
        {
            if (dt != null)
            {
                string line = string.Empty;
                if (dt.Rows.Count > 0)
                {
                    string str = dt.ToCSV();
                    using (StreamWriter sw = new StreamWriter(filePath1))
                    {
                        sw.Write(str);
                    }
                }
                dt.Clear();
                dt = null;
            }
        }

但是有没有什么方法可以直接从html页面导出,就像我们使用打印窗口一样。打印

据我所知,除了发送另一个HTTP请求并使用可下载的mime类型响应之外,没有可靠的方法直接从网页启动可下载文件

我也看不出有什么必要。只要您可以发送包含各种所需信息的请求,您的服务器就可以做出适当的响应

更新

从您的评论来看,您似乎不希望在本地实际写入CSV文件。如果您只想在浏览器中将CSV显示为文本,那么当然可以通过一些简单的迭代:

function csv(id){

  var output = '';

  $('table#' + id + ' tr').each(function(i){

    if(i)
      output += '</br>';

    var children = $(this).find('td, th');

    children.each(function(j){

      output += '\"' + $(this).html() +  '\"';

      if(j < children.length - 1)
        output += ', ';

    });
  });

  return output;

}

这里有一个…

好的,但是我不能遍历表中的行并将它们写入csv吗?简单的回答是否。您可以遍历表并将数据发送到服务器,构建csv服务器端,然后将其传递回浏览器进行下载。但是浏览器不允许您“写入”客户端计算机上的本地文件。那将是一个重大的安全漏洞。嘿,我有东西!看看这个!但这并不“写入”本地文件,它只是将CSV作为字符串进行准备。用户仍然需要将其复制并粘贴到文本文件中。如果这是你需要的,那么你的问题就不是很明确。当然,可以用JavaScript将任何形式的数据解析为字符串……好吧,这不是我所需要的,但我可以使用它。谢谢你的帮助!从下一次开始,我将更加明确。