В конце этого ответа есть отдельный пример, но вот две ваши проблемы:
Большие числа
Лучший способ исправить это - использовать 'excel' вместо «csv» здесь:
dom: 'Bfrtip',
"buttons": [
'excel'
]
Это обеспечит формат ячейки Excel «число» вместо «общий».
![enter image description here](https://i.stack.imgur.com/Iv4TV.png)
Я не знаю способа автоматического управления форматом ячейки Excel при использовании опции экспорта в CSV - если вы не готовы сохранить CSV в виде текстового файла, затем импортировать в Excel и отформатировать его во время импорта ( ручной процесс).
Символы с ударением
Существуют различные причины возникновения этой проблемы, многие из которых выходят за рамки DataTables, поэтому следующее может не помочь, но ...
Убедитесь, что ваша страница HTML содержит это внутри тега head
:
<meta charset="UTF-8">
Этого достаточно для того, чтобы моя демо-версия работала (см. Ниже). Например:
![enter image description here](https://i.stack.imgur.com/vsi9d.png)
Однако, как я уже сказал, может быть много других причин - например, см. Здесь .
Полный пример
Вставьте следующие 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.