上传文件至 /
This commit is contained in:
parent
7f73acf075
commit
79ae657ea8
125
go.html
Normal file
125
go.html
Normal file
@ -0,0 +1,125 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>XLS文件上传和导出</title>
|
||||
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css">
|
||||
<style>
|
||||
body {
|
||||
background-color: #f8f9fa;
|
||||
}
|
||||
.container {
|
||||
max-width: 600px;
|
||||
margin: 50px auto;
|
||||
padding: 20px;
|
||||
border: 1px solid #dee2e6;
|
||||
border-radius: 5px;
|
||||
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.form-group {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.btn-primary {
|
||||
width: 100%;
|
||||
background-color: #007bff;
|
||||
border-color: #007bff;
|
||||
}
|
||||
.btn-primary:hover {
|
||||
background-color: #0056b3;
|
||||
border-color: #0056b3;
|
||||
}
|
||||
.form-control-file {
|
||||
border: 1px solid #ced4da;
|
||||
border-radius: 0.25rem;
|
||||
padding: 0.375rem 0.75rem;
|
||||
}
|
||||
.form-control-file:hover {
|
||||
border-color: #007bff;
|
||||
}
|
||||
.text-center {
|
||||
color: #343a40;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<h2 class="text-center">XLS文件上传和导出</h2>
|
||||
<form>
|
||||
<div class="form-group">
|
||||
<p class="text-muted">请使用此功能上传 XLS 文件,并根据您的需求提取指定字段的数据进行导出。您可以选择要导出的起始行,确保您的文件格式符合要求。</p>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="fileInput">选择 Excel 文件</label>
|
||||
<input type="file" class="form-control-file" id="fileInput" accept=".xls,.xlsx">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="startRowInput">从第几行开始导出(从 1 开始)</label>
|
||||
<input type="number" class="form-control" id="startRowInput" value="1" min="1">
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary" id="exportButton">导出</button>
|
||||
</form>
|
||||
</div>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.18.5/xlsx.full.min.js"></script>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.slim.min.js"></script>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/popper.js/2.5.4/umd/popper.min.js"></script>
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/4.5.2/js/bootstrap.min.js"></script>
|
||||
<script>
|
||||
document.getElementById('exportButton').onclick = function() {
|
||||
const fileInput = document.getElementById('fileInput');
|
||||
const file = fileInput.files[0];
|
||||
const startRowInput = document.getElementById('startRowInput');
|
||||
const startRow = parseInt(startRowInput.value) - 1; // 转换为从 0 开始的索引
|
||||
if (file) {
|
||||
const reader = new FileReader();
|
||||
reader.onload = function(e) {
|
||||
const data = new Uint8Array(e.target.result);
|
||||
const workbook = XLSX.read(data, { type: 'array' });
|
||||
const firstSheetName = workbook.SheetNames[0];
|
||||
const worksheet = workbook.Sheets[firstSheetName];
|
||||
// 获取原始工作表的 JSON 数据
|
||||
const originalData = XLSX.utils.sheet_to_json(worksheet, { raw: false });
|
||||
// 假设我们要提取的 5 个字段是 '字段1', '字段2', '字段3', '字段4', '字段5'
|
||||
const fieldsToExtract = ['姓名', '部门', '账号', '入职日期'];
|
||||
const extractedData = [];
|
||||
// 从指定行开始提取数据
|
||||
for (let i = startRow; i < originalData.length; i++) {
|
||||
let newRow = {};
|
||||
fieldsToExtract.forEach(field => {
|
||||
if (originalData[i][field]!== undefined) {
|
||||
newRow[field] = originalData[i][field];
|
||||
}
|
||||
});
|
||||
extractedData.push(newRow);
|
||||
}
|
||||
// 将提取的数据转换为工作表
|
||||
const newWorksheet = XLSX.utils.json_to_sheet(extractedData);
|
||||
// 计算每列的最大宽度
|
||||
const columnWidths = [];
|
||||
extractedData.forEach(row => {
|
||||
Object.keys(row).forEach((key, index) => {
|
||||
const value = row[key]? row[key].toString() : '';
|
||||
if (!columnWidths[index] || columnWidths[index] < value.length) {
|
||||
columnWidths[index] = value.length;
|
||||
}
|
||||
});
|
||||
});
|
||||
// 设置列宽
|
||||
columnWidths.forEach((width, index) => {
|
||||
newWorksheet['!cols'] = newWorksheet['!cols'] || [];
|
||||
newWorksheet['!cols'][index] = { wch: width + 2 }; // 增加额外的宽度
|
||||
});
|
||||
const newWorkbook = XLSX.utils.book_new();
|
||||
XLSX.utils.book_append_sheet(newWorkbook, newWorksheet, '新工作表');
|
||||
const newFileName = '输出.xls';
|
||||
XLSX.writeFile(newWorkbook, newFileName);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
} else {
|
||||
alert('请先选择一个文件');
|
||||
}
|
||||
};
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
BIN
屏幕截图 2024-12-27 101826.png
Normal file
BIN
屏幕截图 2024-12-27 101826.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 102 KiB |
Loading…
x
Reference in New Issue
Block a user