fix: export filtered tender list as real XLSX
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
// User/source text stays a string cell, including leading '=' and embedded newlines.
|
||||
export async function createTenderWorkbook(tenders) {
|
||||
if (!Array.isArray(tenders) || !tenders.length) throw new Error('Dışa aktarılacak ihale bulunamadı.');
|
||||
const {default:ExcelJS} = await import('exceljs');
|
||||
const book = new ExcelJS.Workbook();
|
||||
book.creator = 'İhaleist';
|
||||
const sheet = book.addWorksheet('İhale Listesi');
|
||||
sheet.columns = [
|
||||
['İKN',20],['Başlık',65],['Kurum',45],['Şehir',20],['İhale tarihi',18],
|
||||
['İhale saati',15],['Alım türü',25],['Sektör',30],['CPV',35],['Kaynak',55],
|
||||
].map(([header,width])=>({header,width}));
|
||||
for (const t of tenders) {
|
||||
sheet.addRow([t.ikn,t.baslik,t.kurum,t.sehir,t.tarih,t.saat,t.alimTuru,t.sektor,
|
||||
t.cpvLabel || (Array.isArray(t.cpv) ? t.cpv.join(', ') : t.cpv),t.kaynakUrl].map(v=>String(v ?? '')));
|
||||
}
|
||||
sheet.views = [{state:'frozen',ySplit:1}];
|
||||
sheet.autoFilter = {from:'A1',to:`J${tenders.length+1}`};
|
||||
sheet.getRow(1).font = {bold:true};
|
||||
sheet.eachRow(row=>{row.alignment={vertical:'top',wrapText:true};});
|
||||
return book.xlsx.writeBuffer();
|
||||
}
|
||||
Reference in New Issue
Block a user