npm i exceljs

const ExcelJS = require('exceljs');

async function createTestExcel() {
  const workbook = new ExcelJS.Workbook();

  // 🔹 Workbook özellikleri
  workbook.creator = 'ABC Teknoloji A.Ş.';
  workbook.created = new Date();

  const worksheet = workbook.addWorksheet('HeaderFooterTest', {
    pageSetup: {
      paperSize: 9, // A4
      orientation: 'portrait'
    }
  });

  // 🔹 KURUMSAL HEADER & FOOTER
  worksheet.headerFooter = {
    // İlk sayfa header
    firstHeader:
      '&L&"Arial,Bold"&14ABC TEKNOLOJİ A.Ş.' +
      '&C&"Arial,Bold"&16SATIŞ RAPORU' +
      '&R&"Arial"&10Versiyon 1.0',

    // Tek sayfalar
    oddHeader:
      '&L&"Arial,Bold"&12ABC TEKNOLOJİ A.Ş.' +
      '&C&"Arial,Bold"&14SATIŞ RAPORU' +
      '&R&"Arial"&10Sayfa &P / &N',

    // Çift sayfalar
    evenHeader:
      '&L&"Arial"&10SATIŞ RAPORU' +
      '&C&"Arial,Bold"&12ABC TEKNOLOJİ A.Ş.' +
      '&R&"Arial"&10Sayfa &P / &N',

    // İlk sayfa footer
    firstFooter:
      '&C&"Arial"&9Bu doküman ABC Teknoloji A.Ş. mülkiyetindedir.',

    // Tek sayfa footer
    oddFooter:
      '&L&"Arial"&9Gizli / Confidential' +
      '&C&"Arial"&9Oluşturma Tarihi: &D' +
      '&R&"Arial"&9Saat: &T',

    // Çift sayfa footer
    evenFooter:
      '&L&"Arial"&9Gizli / Confidential' +
      '&C&"Arial"&9Oluşturma Tarihi: &D' +
      '&R&"Arial"&9Saat: &T'
  };

  // 🔹 Kolonlar
  worksheet.columns = [
    { header: 'ID', key: 'id', width: 10 },
    { header: 'Ürün', key: 'name', width: 30 },
    { header: 'Fiyat', key: 'price', width: 15 }
  ];

  // 🔹 TABLE TEST
  worksheet.addTable({
    name: 'TestTable',
    ref: 'A1',
    headerRow: true,
    totalsRow: true,
    style: {
      theme: 'TableStyleMedium9',
      showRowStripes: true
    },
    columns: [
      { name: 'ID', totalsRowLabel: 'Toplam:' },
      { name: 'Ürün' },
      { name: 'Fiyat', totalsRowFunction: 'sum' }
    ],
    rows: [
      [1, 'Kalem', 10],
      [2, 'Defter', 25],
      [3, 'Silgi', 5]
    ]
  });

  // 🔹 Sayfa kırılımı testi
  for (let i = 4; i <= 60; i++) {
    worksheet.addRow([i, `Ürün ${i}`, i * 2]);
  }

  // 🔹 Yazdırma ayarları
  worksheet.pageSetup.printTitlesRow = '1:1';
  worksheet.pageSetup.fitToPage = true;

  await workbook.xlsx.writeFile('excel-header-footer-test.xlsx');
  console.log('✅ excel-header-footer-test.xlsx oluşturuldu');
}

createTestExcel();