Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何创建可以将html导出到CSV文件的功能?_Javascript_Php_Csv_Html Table_Export To Csv - Fatal编程技术网

Javascript 如何创建可以将html导出到CSV文件的功能?

Javascript 如何创建可以将html导出到CSV文件的功能?,javascript,php,csv,html-table,export-to-csv,Javascript,Php,Csv,Html Table,Export To Csv,我有以下html文件: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en"> <head> </head> <body> <p align="center"><strong>Claims Search Results</strong></p>

我有以下html文件:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" dir="ltr" lang="en">
    <head>
    </head>
    <body>
         <p align="center"><strong>Claims Search Results</strong></p>
         <table id="ClaimsListPrint" class="printClaims">
         <thead>
        <tr style="background-color: rgb(241, 241, 241);">
            <th style="background-color: rgb(215, 227, 235);">
                Member
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Date of Service
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Provider
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Claim Type
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Status
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Billed Amount
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Paid by Plan
            </th>
            <th style="background-color: rgb(215, 227, 235);">
                Member Responsiblity
            </th>
        </tr>
    </thead>
    <tbody>
        <tr style="background-color: rgb(255, 255, 240);" class="claim">
            <td class="claim-member">
                John Sample
            </td>
            <td class="claim-dateOfService">
                02/27/2011
            </td>
            <td class="claim-provider">
                TestProv1
            </td>
            <td class="claim-claimType">
                Medical
            </td>
            <td class="claim-status">
                Processed
            </td>
            <td class="claim-billedAmount">
                $145
            </td>
            <td class="claim-paidByPlan">
                $125
            </td>
            <td class="claim-memberResponsibility">
                $25
            </td>
        </tr>
        <tr style="background-color: rgb(241, 241, 241);" class="claim">
            <td class="claim-member">
                John Sample
            </td>
            <td class="claim-dateOfService">
                02/27/2011
            </td>
            <td class="claim-provider">
                TestProv1
            </td>
            <td class="claim-claimType">
                Medical
            </td>
            <td class="claim-status">
                In-Process
            </td>
            <td class="claim-billedAmount">
                -
            </td>
            <td class="claim-paidByPlan">
                -
            </td>
            <td class="claim-memberResponsibility">
                -
            </td>
        </tr>
      </tbody>
    </table>
  </body>
</html>

索赔搜索结果

成员 服务日期 供应商 索赔类型 地位 账单金额 按计划支付 成员责任 约翰样本 02/27/2011 TestProv1 医学的 处理 $145 $125 $25 约翰样本 02/27/2011 TestProv1 医学的 进行中 - - -
我希望最终用户能够点击文件中的链接,如下所示:

<a id="link3" class="links" href="home.html">Export to Microsoft Excel</a>


当他们点击它时,我希望该表被导出为csv文件。我怎样才能做到这一点?我可以用Javascript、PHP或其他任何语言来实现这一点吗?

生成页面所用的任何语言都是我导出页面所用的语言。如果您已经在其他地方拥有数据,那么解析HTML页面以生成CSV是没有意义的。页面是如何生成的?

无论您使用何种语言生成页面,我都会将其导出。如果您已经在其他地方拥有数据,那么解析HTML页面以生成CSV是没有意义的。页面是如何生成的?

考虑使用jQuery插件:

这是一条单行线:

$('#mytable').table2CSV();

您可以在这里看到这一点。

考虑使用jQuery插件:

这是一条单行线:

$('#mytable').table2CSV();
您可以在这里看到这一点。

在PHP中:

  • 使用PHP的类将HTML文件加载到DOM对象结构中

  • 解析DomDocument,找到所需的元素,并将相关值提取到数组中

  • 使用PHP函数将数组另存为CSV文件

  • 在PHP中:

  • 使用PHP的类将HTML文件加载到DOM对象结构中

  • 解析DomDocument,找到所需的元素,并将相关值提取到数组中

  • 使用PHP函数将数组另存为CSV文件


  • 尽管,@p.campbell有一个很好的解决方案,它可以提供格式化的CSV,但它不能提供CSV下载。如果希望最终用户以CSV形式下载,您可以使用PHP等服务器技术,并将CSV作为响应类型返回

    我也同意@mrkmg。如果您有数据,请编写一些PHP以CSV格式返回数据

    http://mysite.com/data/csv
    传入格式化数据,并在PHP中将响应类型更改为CSV。用户将得到一个很好的另存为。。。对话框。我相信代码应该是这样的:

    <?php
    // We'll be outputting a CSV
    header('Content-type: application/csv');
    
    // It will be called downloaded.csv
    header('Content-Disposition: attachment; filename="downloaded.csv"');
    
    // Write CSV...
    ?> 
    

    尽管,@p.campbell有一个很好的解决方案,它可以提供格式化的CSV,但它不能提供CSV下载。如果希望最终用户以CSV形式下载,您可以使用PHP等服务器技术,并将CSV作为响应类型返回

    我也同意@mrkmg。如果您有数据,请编写一些PHP以CSV格式返回数据

    http://mysite.com/data/csv
    传入格式化数据,并在PHP中将响应类型更改为CSV。用户将得到一个很好的另存为。。。对话框。我相信代码应该是这样的:

    <?php
    // We'll be outputting a CSV
    header('Content-type: application/csv');
    
    // It will be called downloaded.csv
    header('Content-Disposition: attachment; filename="downloaded.csv"');
    
    // Write CSV...
    ?> 
    

    如果您想下载此CSV文件,则可以使用PHP修改文档标题,告知浏览器强制下载文件。我使用以下函数强制下载现有文件,但您可以对其进行一些修改,以输出动态生成的CSV文件。或者,您可以保存一个CSV文件并使用此文件下载它

    顺便说一句,这不是我的原始代码。我在StackOverflow的其他地方找到了它,它对我来说非常有用

    function download($filePath) {
        if(headers_sent()) die('Headers alread sent. Download cannot initialize.');
    
        // Required for some browsers
        if (ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');
    
        // File Exists?
        if( file_exists($filePath) ){
            // Parse Info / Get Extension
            $fsize = filesize($filePath);
            $path_parts = pathinfo($filePath);
            $ext = strtolower($path_parts["extension"]);
    
            // Determine Content Type
            switch ($ext) {
                case "pdf": $ctype="application/pdf"; break;
                case "exe": $ctype="application/octet-stream"; break;
                case "zip": $ctype="application/zip"; break;
                case "doc": $ctype="application/msword"; break;
                case "xls": $ctype="application/vnd.ms-excel"; break;
                case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
                case "gif": $ctype="image/gif"; break;
                case "png": $ctype="image/png"; break;
                case "jpeg":
                case "jpg": $ctype="image/jpg"; break;
                default: $ctype="application/force-download";
            }
    
            header("Pragma: public"); // required
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private",false); // required for certain browsers
            header("Content-Type: $ctype");
            header("Content-Disposition: attachment; filename=\"".basename($filePath)."\";" );
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: ".$fsize);
            ob_clean();
            flush();
            readfile( $filePath );
    
        } else {
            die('File Not Found'); 
        }
    }
    

    如果您想下载这个CSV文件,那么可以使用PHP修改文档标题,告诉浏览器强制下载文件。我使用以下函数强制下载现有文件,但您可以对其进行一些修改,以输出动态生成的CSV文件。或者,您可以保存一个CSV文件并使用此文件下载它

    顺便说一句,这不是我的原始代码。我在StackOverflow的其他地方找到了它,它对我来说非常有用

    function download($filePath) {
        if(headers_sent()) die('Headers alread sent. Download cannot initialize.');
    
        // Required for some browsers
        if (ini_get('zlib.output_compression')) ini_set('zlib.output_compression', 'Off');
    
        // File Exists?
        if( file_exists($filePath) ){
            // Parse Info / Get Extension
            $fsize = filesize($filePath);
            $path_parts = pathinfo($filePath);
            $ext = strtolower($path_parts["extension"]);
    
            // Determine Content Type
            switch ($ext) {
                case "pdf": $ctype="application/pdf"; break;
                case "exe": $ctype="application/octet-stream"; break;
                case "zip": $ctype="application/zip"; break;
                case "doc": $ctype="application/msword"; break;
                case "xls": $ctype="application/vnd.ms-excel"; break;
                case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
                case "gif": $ctype="image/gif"; break;
                case "png": $ctype="image/png"; break;
                case "jpeg":
                case "jpg": $ctype="image/jpg"; break;
                default: $ctype="application/force-download";
            }
    
            header("Pragma: public"); // required
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Cache-Control: private",false); // required for certain browsers
            header("Content-Type: $ctype");
            header("Content-Disposition: attachment; filename=\"".basename($filePath)."\";" );
            header("Content-Transfer-Encoding: binary");
            header("Content-Length: ".$fsize);
            ob_clean();
            flush();
            readfile( $filePath );
    
        } else {
            die('File Not Found'); 
        }
    }
    

    我道歉。我想导出html表而不是文件。很抱歉。我想导出html表而不是文件。