Я хочу прочитать файл Excel в angular, начиная с номера строки 5 (скажем) в качестве заголовка, и прочитать столбцы с заголовком ' colName1 ', ' colName2 'и' colName3 '(Если невозможно прочитать с этой большой спецификацией, возьмите часть данных на основе спецификаций). Есть ли простой способ сделать это? Весь код, с которым я столкнулся, использует несколько встроенных сценариев для выполнения этой работы.
Вот код, который я придумал. Он читает выбранный Excel и отображает его JSON в консоли. Он не может обрабатывать файлы, заголовок которых находится не в 1-й строке и не читает указанные столбцы.
HTML:
<div class="col-md-8 form-group">
<input type="file" class="form-control" (change)="uploadedFile($event)" placeholder="Upload file" accept=".xlsx">
</div>
TypeScript :
import { Component, OnInit } from '@angular/core';
import * as XLSX from 'xlsx';
import * as FileSaver from 'file-saver';
@Component({
selector: 'app-upload',
templateUrl: './upload.component.html',
styleUrls: ['./upload.component.css']
})
export class UploadComponent implements OnInit {
constructor() { }
ngOnInit(): void {
}
storeData: any;
jsonData: any;
fileUploaded: File;
worksheet: any;
uploadedFile(event) {
this.fileUploaded = event.target.files[0];
this.readExcel();
}
readExcel() {
let readFile = new FileReader();
readFile.onload = (e) => {
this.storeData = readFile.result;
var data = new Uint8Array(this.storeData);
var arr = new Array();
for (var i = 0; i != data.length; ++i) arr[i] = String.fromCharCode(data[i]);
var bstr = arr.join("");
var workbook = XLSX.read(bstr, { type: "binary" });
var first_sheet_name = workbook.SheetNames[0];
this.worksheet = workbook.Sheets[first_sheet_name];
this.jsonData = XLSX.utils.sheet_to_json(this.worksheet, { raw: false });
this.jsonData = JSON.stringify(this.jsonData);
console.log(this.jsonData)
}
readFile.readAsArrayBuffer(this.fileUploaded);
}
}
Я ищу поведение, аналогичное тому, которое предоставляется pandas в Python:
df = pd.read_excel('fileName.xlsx', sheet_name='sheet1', header=5)
df = df[['colName1','colName2', 'colName3']].copy()
Я новичок в Angular и до сих пор пытаясь найти выход из основ Angular.