Exceljs Angular 8 Изменить разделитель csv

Я хотел бы использовать exceljs для записи файла csv с помощью writeBuffer. Как я могу изменить разделитель csv. На github была проблема, что вы должны сделать это с быстрыми параметрами csv. Но, во-первых, в writeBuffer нет параметра options, а во-вторых, интерфейс для параметров csv не имеет параметра-разделителя.

var workbook = new ExcelJS.Workbook();    
  var worksheet = workbook.addWorksheet('Main sheet');
workbook.csv.writeBuffer().then(function(buffer) {
      saveAs(new Blob([buffer], { type: "application/octet-stream" }), "DataGrid.csv");
    });

person Franki1986    schedule 18.12.2019    source источник


Ответы (2)


Однако я знаю, что это старый вопрос, на случай, если кто-то еще ищет тот же ответ (с более новыми версиями модулей). Это сработало для меня:

Сначала импортируйте необходимые модули:

import { Workbook } from 'exceljs'; // (current version is 4.2.1)
import saveAs from 'file-saver'; // (current version is 2.0.5)

Затем вы можете установить delimiter в formatterOptions:

const workbook = new Workbook();
const worksheet = workbook.addWorksheet('Main sheet');

workbook.csv.writeBuffer({ formatterOptions: { delimiter: delimiter } })
.then((buffer: BlobPart) => {
    saveAs(new Blob([buffer], { type: 'application/octet-stream' }), 'filename.csv');
})
.catch();

Если вы столкнулись с ошибкой в ​​процессе сборки приложения (например, Не удается найти модуль 'stream'), вам может потребоваться добавить узел к типам в файле tsconfig.app.json:

{
    "compilerOptions": {
        "types": ["node"]
    }
}
person Wian du Plooy    schedule 06.07.2021

Во-первых, я использую exceljs версии 1.12.2: я видел, что бочка не завершена, поэтому объявленный метод

function writeBuffer(options)

не видно над наборами. Итак, если вы импортируете exceljs следующим образом:

import * as ExcelJS from 'exceljs';

Вы должны вызывать метод следующим образом:

 let csv = workbook.csv as any; // workaround
 csv.writeBuffer({delimiter: ";"}).then(function(buffer) {
     saveAs(new Blob([buffer], { type: "application/octet-stream" }), "Data.csv");
 });
person Franki1986    schedule 19.12.2019