<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Excel Sheet Merger</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.16.9/xlsx.full.min.js"></script>
<style>
body {
background-color: #ffe6e6; /* 淡红色背景 */
font-family: Arial, sans-serif;
padding: 20px;
}
#progressBar {
width: 100%;
background-color: #f3f3f3;
margin-top: 10px;
}
#progressBarFill {
width: 0%;
height: 30px;
background-color: #4caf50;
text-align: center;
line-height: 30px;
color: white;
}
button {
margin: 5px;
padding: 10px 20px;
background-color: #ff6666; /* 淡红色按钮 */
color: white;
border: none;
cursor: pointer;
border-radius: 5px;
}
button:disabled {
background-color: #cccccc;
cursor: not-allowed;
}
input[type="file"] {
margin-bottom: 10px;
}
</style>
</head>
<body>
<h1>Excel Sheet Merger</h1>
<input type="file" id="fileInput" accept=".xlsx, .xls" />
<button id="startButton" disabled>Start Merge</button>
<button id="clearButton">Clear Data</button>
<div id="progressBar">
<div id="progressBarFill">0%</div>
</div>
<button id="exportButton" disabled>Export Merged File</button>
<script>
let workbook = null;
let mergedData = [];
document.getElementById('fileInput').addEventListener('change', function(event) {
const file = event.target.files[0];
if (file) {
document.getElementById('startButton').disabled = false;
}
});
document.getElementById('startButton').addEventListener('click', function() {
const file = document.getElementById('fileInput').files[0];
if (file) {
const reader = new FileReader();
reader.onload = function(e) {
const data = new Uint8Array(e.target.result);
workbook = XLSX.read(data, {type: 'array'});
// 合并所有Sheet的数据
mergedData = [];
workbook.SheetNames.forEach(sheetName => {
const worksheet = workbook.Sheets[sheetName];
const json = XLSX.utils.sheet_to_json(worksheet);
mergedData = mergedData.concat(json);
});
document.getElementById('exportButton').disabled = false;
updateProgress(100);
};
reader.readAsArrayBuffer(file);
}
});
document.getElementById('clearButton').addEventListener('click', function() {
document.getElementById('fileInput').value = '';
document.getElementById('startButton').disabled = true;
document.getElementById('exportButton').disabled = true;
workbook = null;
mergedData = [];
updateProgress(0);
});
document.getElementById('exportButton').addEventListener('click', function() {
if (workbook && mergedData.length > 0) {
const newWorkbook = XLSX.utils.book_new();
const newSheet = XLSX.utils.json_to_sheet(mergedData);
XLSX.utils.book_append_sheet(newWorkbook, newSheet, 'Merged Sheet');
XLSX.writeFile(newWorkbook, 'merged_excel.xlsx');
}
});
function updateProgress(percent) {
const progressBarFill = document.getElementById('progressBarFill');
progressBarFill.style.width = percent + '%';
progressBarFill.textContent = percent + '%';
}
</script>
</body>
</html>
HTML
格式化
支持Emmet,输入 p 后按 Tab键试试吧!
<head> ... </head>
<body>
</body>
/* 示例代码 */
body {
text-align: center;
}
i {
color: #777;
}
// 示例代码
console.log(["Hello 笔.COOL 控制台"])