Загрузка данных
<script>
async function exportToExcel(){
const workbook = new ExcelJS.Workbook();
const sheet = workbook.addWorksheet("Карта практики");
// =========================
// Размеры колонок
// =========================
sheet.getColumn(1).width = 5;
sheet.getColumn(2).width = 35;
for(let i = 3; i <= 33; i++){
sheet.getColumn(i).width = 4;
}
// =========================
// Стили
// =========================
const borderStyle = {
top: {style:'thin'},
left: {style:'thin'},
bottom: {style:'thin'},
right: {style:'thin'}
};
// =========================
// Верхняя шапка
// =========================
sheet.mergeCells('B2:AG3');
const orgCell = sheet.getCell('B2');
orgCell.value = 'ИП или ООО';
orgCell.alignment = {
horizontal:'center',
vertical:'middle'
};
orgCell.font = {
bold:true,
size:14
};
orgCell.fill = {
type:'pattern',
pattern:'solid',
fgColor:{argb:'FFF200'}
};
orgCell.border = borderStyle;
// =========================
// Колледж
// =========================
sheet.mergeCells('B5:AG5');
const college = sheet.getCell('B5');
college.value =
'ГБПОУ Колледж информационных технологий "ИТ.Москва"';
college.font = {
bold:true,
size:14
};
college.alignment = {
horizontal:'center'
};
// =========================
// Заголовок
// =========================
sheet.mergeCells('B7:AG7');
const title = sheet.getCell('B7');
title.value =
'КАРТА УЧЕТА ПРОХОЖДЕНИЯ ПРАКТИКИ';
title.font = {
bold:true,
size:16
};
title.alignment = {
horizontal:'center'
};
// =========================
// Практика
// =========================
sheet.mergeCells('B9:M9');
const practice = sheet.getCell('B9');
practice.value =
document.querySelector('.practice-name').innerText;
practice.fill = {
type:'pattern',
pattern:'solid',
fgColor:{argb:'FFF200'}
};
practice.border = borderStyle;
practice.alignment = {
horizontal:'center'
};
// =========================
// Группа
// =========================
sheet.getCell('N9').value = 'Группа';
sheet.getCell('O9').value =
document.querySelector('.group').innerText;
sheet.getCell('O9').border = borderStyle;
// =========================
// Месяц
// =========================
sheet.getCell('B11').value = 'Месяц';
sheet.mergeCells('C11:G11');
const monthCell = sheet.getCell('C11');
monthCell.fill = {
type:'pattern',
pattern:'solid',
fgColor:{argb:'FFF200'}
};
monthCell.border = borderStyle;
// =========================
// Заголовок таблицы
// =========================
sheet.mergeCells('B13:B14');
const fio = sheet.getCell('B13');
fio.value = 'Ф.И.О. обучающегося';
fio.alignment = {
horizontal:'center',
vertical:'middle',
wrapText:true
};
fio.border = borderStyle;
sheet.mergeCells('C13:AG13');
const attend = sheet.getCell('C13');
attend.value =
'Отметки о явках и неявках';
attend.alignment = {
horizontal:'center'
};
attend.border = borderStyle;
// =========================
// Дни месяца
// =========================
for(let day = 1; day <= 31; day++){
const cell =
sheet.getCell(14, day + 2);
cell.value = day;
cell.alignment = {
horizontal:'center'
};
cell.border = borderStyle;
}
// =========================
// Данные студентов
// =========================
const rows =
document.querySelectorAll(
"#attendanceTable tbody tr"
);
let excelRow = 15;
rows.forEach(row => {
const cells = row.querySelectorAll("td");
// ФИО
const fioCell =
sheet.getCell(excelRow, 2);
fioCell.value = cells[0].innerText;
fioCell.border = borderStyle;
// Посещаемость
for(let i = 1; i <= 31; i++){
const htmlCell = cells[i];
const excelCell =
sheet.getCell(excelRow, i + 2);
excelCell.value =
htmlCell.innerText;
excelCell.alignment = {
horizontal:'center',
vertical:'middle'
};
excelCell.border = borderStyle;
// Цвета
if(
htmlCell.classList.contains('present')
){
excelCell.fill = {
type:'pattern',
pattern:'solid',
fgColor:{argb:'92D050'}
};
}
if(
htmlCell.classList.contains('absent')
){
excelCell.fill = {
type:'pattern',
pattern:'solid',
fgColor:{argb:'FF9999'}
};
}
}
excelRow++;
});
// =========================
// Подписи
// =========================
sheet.getCell('B23').value =
'Руководитель практики';
sheet.getCell('B25').value =
'Руководитель от колледжа';
// =========================
// Печать
// =========================
sheet.pageSetup = {
orientation:'landscape',
fitToPage:true,
fitToWidth:1
};
// =========================
// Сохранение
// =========================
const buffer =
await workbook.xlsx.writeBuffer();
saveAs(
new Blob([buffer]),
'Карта_учета_практики.xlsx'
);
}
</script>