php - DataTables,将数据表导出到 CSV 文件,其中列值带有逗号

标签 php jquery laravel

我在我的 Laravel 应用程序中使用数据表,有 2 列(id、地址)想要将内容导出到 csv 文件。但是,地址列中的某些值包含逗号。因此,当用户打开 csv 文件时,该值将被分成几列。例如数据表如下所示:

ID、地址 1,伊利诺伊州芝加哥

但是,当用户在 Excel 中打开 csv 文件时: 甲、乙、丙 编号、描述 1,伊利诺伊州芝加哥

因此,在 Excel 中打开时,值“Chicago, IL”会分为 2 列:B 和 C。 我期望只填充 Excel 列 A 和 B(id、地址)。

我可以做些什么来转义逗号或格式化单元格,以便当用户打开文件时只填充 2 列,并且地址列具有值: 伊利诺伊州芝加哥

我试图到处找到解决方案,但没有运气,所以请不要重复这个问题 提前致谢。

<table class="table" id="sample_1">
<thead>
<tr>
<th class="all export"> id </th>
<th class="all export">address</th>
</tr>
</thead>
 <tbody>
 @foreach ($data as $item) 
 <tr>                                  
 <td >{{ $item->id}} </td>
 <td >{{ $item->address}} </td>
 </tr>
@endforeach
</tbody>
</table>

   TableDatatablesEditable = function() {
    var e = function() {
        var e = $("#sample_1"),
            t = e.dataTable({
                dom: "Bfrtip",
                buttons: [{
                    extend: "print",

                    className: "btn dark btn-outline"
                }, {
                    extend: "pdf",
                    className: "btn green btn-outline"
                }, {
                    extend: 'csvHtml5',
               exportOptions: {
                     columns: ['.export'],
                              },
               className: "btn-outline"
                }],
                language: {
                    lengthMenu: " _MENU_ records"
                },
                columnDefs: [{
                    orderable: !0,
                    targets: [0]
                }, {
                    searchable: !0,
                    targets: [0]
                }],
                order: [
                    [1, "desc"]
                ],
                lengthMenu: [
                    [5, 10, 15, 20, -1],
                    [5, 10, 15, 20, "All"]
                ],
                pageLength: 20,
                dom: "<'row' <'col-md-12'B>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>"
            });

最佳答案

查看文档 -> https://datatables.net/reference/button/csvHtml5

您可以强制分隔符为分号 ; 而不是 ,

$('#example').DataTable( {
  dom: 'Bfrtip',
  buttons: [{
    extend: 'csvHtml5',
    fieldSeparator: ';'
    //..other options
  }],
})

关于php - DataTables,将数据表导出到 CSV 文件,其中列值带有逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59518818/

相关文章:

javascript - 我的 Javascript/jQuery 函数出了什么问题?

php - 更改 ENUM 列并将值添加到 Laravel 中的该列

php - 检查是否使用 Laravel 数据透视表设置了某些内容

php - 将 PHP 数组插入 MySQL,并将表作为变量或动态表

php - Mysql 在一次查询中统计 2 行

php - 查询不给出空记录

PHP 将字符串转换为孟加拉语语言类型的 SEO 友好 URL

选择时的 jQuery 自动完成触发按钮

javascript - Jquery 在 URL 中使用#SOMETHING 来触发事件

php - Laravel 5.5 多重身份验证路由问题