Экспорт данных в Excel - PullRequest
       1

Экспорт данных в Excel

0 голосов
/ 04 марта 2020

Я экспортирую таблицы данных в CSV. И когда я открываю файл с помощью Excel, у меня возникают проблемы с большими числами (около 20 цифр). У меня также есть проблемы со спецсимволами. Я думаю, это проблема форматирования. Но я не знаю, как исправить проблему.

Код в моем Js файле:

dom: 'Bfrtip',
    buttons: [
        {
            extend: 'csv',
            text: 'csv',
            fieldSeparator: ';' // with ';' we can export the file in csv and each column is in one column. Without ';' everything is in one column
        },
        'pdf',
        'print'
    ]

Изображение проблемы: enter image description here

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 04 марта 2020

В конце этого ответа есть отдельный пример, но вот две ваши проблемы:

Большие числа

Лучший способ исправить это - использовать 'excel' вместо «csv» здесь:

dom: 'Bfrtip',
"buttons": [
  'excel'
]

Это обеспечит формат ячейки Excel «число» вместо «общий».

enter image description here

Я не знаю способа автоматического управления форматом ячейки Excel при использовании опции экспорта в CSV - если вы не готовы сохранить CSV в виде текстового файла, затем импортировать в Excel и отформатировать его во время импорта ( ручной процесс).

Символы с ударением

Существуют различные причины возникновения этой проблемы, многие из которых выходят за рамки DataTables, поэтому следующее может не помочь, но ...

Убедитесь, что ваша страница HTML содержит это внутри тега head:

<meta charset="UTF-8">

Этого достаточно для того, чтобы моя демо-версия работала (см. Ниже). Например:

enter image description here

Однако, как я уже сказал, может быть много других причин - например, см. Здесь .

Полный пример

Вставьте следующие HTML в текстовый файл (используйте Notepad ++, а не Notepad, если вы используете Windows). Предполагая Notepad ++, убедитесь, что файл сохранен как UTF-8 - меню> Кодировка> UTF-8. Затем откройте файл в любом браузере.

Вам не нужен весь этот JS импорт, представленный ниже (например, PDF); не стесняйтесь удалять лишние. (У меня есть их для более полной демонстрации, и мне было лень их удалять.)

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Export to Excel</title>
  <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
  <script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
  <link rel="stylesheet" type="text/css" href="https://datatables.net/media/css/site-examples.css">

  <!-- buttons -->
  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/buttons/1.6.1/css/buttons.dataTables.min.css">
  <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
  <script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js"></script>
  <script src="https://cdn.datatables.net/buttons/1.6.1/js/dataTables.buttons.min.js"></script>
  <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.flash.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.1.3/jszip.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/pdfmake.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.53/vfs_fonts.js"></script>
  <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.html5.min.js"></script>
  <script src="https://cdn.datatables.net/buttons/1.6.1/js/buttons.print.min.js"></script>

</head>

<body>

<div style="margin: 20px;">

<table id="example" class="display nowrap dataTable cell-border" style="width:100%">
        <thead>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>Adélaïde Nixon</td>
                <td>System Architect</td>
                <td>Edinburgh</td>
                <td>6123456789012345</td>
                <td>2011/04/25</td>
                <td>$320,800</td>
            </tr>
        </tbody>
        <tfoot>
            <tr>
                <th>Name</th>
                <th>Position</th>
                <th>Office</th>
                <th>Age</th>
                <th>Start date</th>
                <th>Salary</th>
            </tr>
        </tfoot>
    </table>

</div>

<script type="text/javascript">

  $(document).ready(function() {
    $('#example').DataTable({

      dom: 'Bfrtip',
      "buttons": [
        'excel'
      ]
    });
  });

</script>

</body>

Обратите внимание на опцию CSV

Если вы используете "csv" вместо "excel" в ваше определение кнопки, и если вы откроете полученный файл в текстовом редакторе вместо Excel, вы увидите эти данные:

"Name","Position","Office","Age","Start date","Salary"
"Adélaïde Nixon","System Architect","Edinburgh","6123456789012345","2011/04/25","$320,800"

Данные - это то, что вам нужно - это просто Excel сделает различные предположения о том, как форматировать данные при открытии файла CSV.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...