Я использую XLSX для анализа данных из файла xlsx. Проблема в том, что когда я пытаюсь получить данные, они отличаются в зависимости от того, читаю ли я их в XLSX и CSV.
Я предпочитаю читать их в CSV, так как если мне не нужно преобразовывать даты в соответствии с в формате Excel .
Я пытаюсь преобразовать файл XLSX в CSV, когда пользователь загружает файл. Я пытаюсь сделать так:
const reader: FileReader = new FileReader();
reader.onload = (e: any) => {
var binaryData = e.target.result;
//Converting Binary Data to base 64
var base64String = window.btoa(binaryData);
const wb = XLSX.read(base64String, { type: 'base64' });
const newFile = XLSX.write(wb, { bookType: 'csv', type: 'binary' });
resolve(newFile);
}
reader.onerror = (error: any) => {
reject(error);
}
reader.readAsBinaryString(file);
Я использую это в обещании. Когда обещание разрешено, я анализирую его в XLSX.WorkSheet следующим образом:
const bstr: string = str;
const wb: XLSX.WorkBook = XLSX.read(bstr, { type: 'binary', raw: false });
const wsname: string = wb.SheetNames[0];
const ws: XLSX.WorkSheet = wb.Sheets[wsname];
let options = { header: 1, raw: false };
let data = <any[][]>(XLSX.utils.sheet_to_json(ws, options));
return data;
Проблема в том, что я ничего не делал, поскольку данные все еще плохие.
Однако, если я открою Excel и нажму «Сохранить как> CSV», прочитайте данные без проблем. Что я делаю не так?
Я использую Angular 7.