Home >Backend Development >PHP Tutorial >How to combine PHP and Vue to import and export employee attendance data
How to combine PHP and Vue to realize the import and export of employee attendance data
Importing and exporting employee attendance data is one of the common functions in enterprise management systems. By combining PHP and Vue can implement simple and effective import and export functions of employee attendance data. This article describes how to implement this functionality using both technologies, and provides specific code examples.
1. Import employee attendance data
First, we need to create a front-end page for users to upload employee attendance data files . Use Vue to quickly create a page with user interaction functions.
<template> <div> <input type="file" @change="uploadFile" /> <button @click="importData">导入数据</button> </div> </template> <script> export default { methods: { uploadFile(e) { this.file = e.target.files[0]; }, importData() { let formData = new FormData(); formData.append("file", this.file); axios.post("/import.php", formData).then((response) => { // 处理导入结果 console.log(response.data); }); }, }, }; </script>
In the above code, we create a page containing file selection and import buttons. The user can select the employee attendance data file to be imported and save the file to this.file
attribute. We then use Vue's @change
method to listen to the file selection event and use the axios
library to send a POST request to upload the file to the server.
<?php $allowedExtensions = ['csv', 'xls', 'xlsx']; //允许的文件扩展名 $uploadPath = './uploads/'; //上传文件保存的路径 if ($_FILES['file']['error'] === UPLOAD_ERR_OK) { $extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); if (in_array($extension, $allowedExtensions)) { $filename = uniqid() . '.' . $extension; $filePath = $uploadPath . $filename; move_uploaded_file($_FILES['file']['tmp_name'], $filePath); // 解析文件并导入数据到数据库 // TODO: 进行数据导入逻辑 echo json_encode(['success' => true, 'message' => '数据导入成功']); } else { echo json_encode(['success' => false, 'message' => '不支持的文件格式']); } } else { echo json_encode(['success' => false, 'message' => '文件上传失败']); } ?>
The above code first checks whether the file is uploaded successfully and checks whether the file extension is allowed. If everything is normal, move the file to the specified path and import the data.
2. Export employee attendance data
Create a front-end page<template> <div> <button @click="exportData">导出数据</button> </div> </template> <script> export default { methods: { exportData() { axios.get("/export.php").then((response) => { // 处理导出结果 console.log(response.data); // 下载文件 const link = document.createElement("a"); link.href = "data:application/octet-stream;base64," + response.data; link.setAttribute("download", "employee_attendance.csv"); document.body.appendChild(link); link.click(); document.body.removeChild(link); }); }, }, }; </script>
In the above code, we create a page that contains an export button. When the user clicks the button, a GET request is sent to the server using the
axios library. ##/export.phpPath. After receiving the exported data, create a
element, set the
href attribute to the exported data, and then set the file name through the
setAttribute method. , and simulate the operation of clicking the download link, thereby realizing the export and download of files.
Create back-end processing logic
<?php header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="employee_attendance.csv"'); // 查询员工考勤数据 // TODO: 查询员工考勤数据的逻辑 // 生成CSV文件 $file = fopen('php://output', 'w'); fputcsv($file, ['姓名', '日期', '考勤状态']); // 将查询结果写入CSV文件 // TODO: 将查询结果写入CSV文件的逻辑 fclose($file); ?>
application/octet-stream
, Content-Disposition as attachment, and specifies the file Namedemployee_attendance.csv, to download the file.
Then, query employee attendance data and write the results into a CSV file.
The above is the detailed content of How to combine PHP and Vue to import and export employee attendance data. For more information, please follow other related articles on the PHP Chinese website!