javascript - JSON till Excel-konvertering
Jag konverterar JSON-data till ett Excel-filformat. Hittills har jag kunnat skapa en fil med datan. Jag ser fram emot att lägga till ett eget meddelande som ska visas (bild nedan) i den första raden och därefter ska data visas i filen med kolumnrubriker.
Jag har tagit referens från denna StackBlitz-länk
Hur kan jag uppnå detta?
Ny fråga
Missing headers firstName, lastName, email, phoneSvar #1
Jag antar att när du säger JSON menar du ett Javascript-objekt som har parserats från en JSON-fil. I mitt exempel är det myObject.
- Vi skapar ett kalkylblad med
XLSX.utils.json_to_sheet(myObject); Vi lägger till en rad i början av kalkylbladet med:
XLSX.utils.sheet_add_aoa(myWorkSheet, [["Your Mesage Goes Here"]], { origin: 0 });detta kommer att infoga en aoa (array av arrayer) till en ny rad på den position som definieras avorigin.{ origin: 0 }betyder första raden
{ origin: 1 }betyder andra raden{ origin: -1 }betyder sista raden
i vårt fall lägger vi till bara en cell (A1) med innehållet: "Ditt meddelande går här"
vi slår ihop cellerna i intervallet A1:D1 (4 celler) med hjälp av
myWorkSheet['!merges']=[{ s: 'A1', e: 'D1' }];Resten talar för sig själv, tror jag
Här är ett fungerande exempel
myObject = [
{ name: "Moran", role: "back" },
{ name: "Alain", role: "front" },
{ name: "Tony", role: "back" },
{ name: "Mike", role: "back" },
{ name: "Abo", role: "back" },
{ name: "Toni", role: "back" }
];
function exportWS() {
var myFile = "myFile.xlsx";
var myWorkSheet = XLSX.utils.json_to_sheet(myObject);
var myWorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet");
XLSX.writeFile(myWorkBook, myFile);
}
function exportWSPlus() {
var myFile = "myFilePlus.xlsx";
var myWorkSheet = XLSX.utils.json_to_sheet(myObject);
XLSX.utils.sheet_add_aoa(myWorkSheet, [["Your Mesage Goes Here"]], { origin: 0 });
var merges = myWorkSheet['!merges'] = [{ s: 'A1', e: 'D1' }];
var myWorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(myWorkBook, myWorkSheet, "myWorkSheet");
XLSX.writeFile(myWorkBook, myFile);
}<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.3/xlsx.full.min.js"></script>
<button type="button" onclick="exportWS()">Export Worksheet</button>
<button type="button" onclick="exportWSPlus()">Export Worksheet+</button>tveka inte att ställa eventuella frågor du kan ha.
Svar #2
Jag har forskat mycket om detta och till slut kunde jag komma på en lösning på det här.
public exportAsExcelFile(json: Array<object>, excelFileName: string): void {
var worksheet: XLSX.WorkSheet = XLSX.utils.aoa_to_sheet([
[`${excelFileName}`]]); // message to display
worksheet['!merges'] = [{ s: { r: 0, c: 0 }, e: { r: 0, c: 3 } }]; //for merging columns. s : start, e: end, c: column, r: row
XLSX.utils.sheet_add_json(worksheet, json, { origin: "A2" }); //origin for json data
const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
var range = XLSX.utils.decode_range(worksheet['!ref']);
for (var C = range.s.r; C <= range.e.r; ++C) {
var address = XLSX.utils.encode_col(C) + "1";
if (!worksheet[address]) continue;
worksheet[address].v = worksheet[address].v.charAt(0).toUpperCase() + worksheet[address].v.substr(1).toLowerCase();
}
}


