index.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. var express = require('express');
  2. const XLSX = require('xlsx');
  3. var router = express.Router();
  4. const {queryDatabase } = require('../db/mysql')
  5. /* GET home page. */
  6. router.get('/info', function(req, res, next) {
  7. const sql = 'SELECT * FROM result_table_1210';
  8. queryDatabase(sql,(err,results)=>{
  9. if(err){
  10. res.status(500).json({ error: '查询数据失败' });
  11. return;
  12. }
  13. res.json(results);
  14. })
  15. // res.render('index', { title: 'Express' });
  16. });
  17. //下载入群表格的excel接口
  18. router.get('/join_group', function(req,res,next){
  19. const sql = 'SELECT * FROM join_group_table';
  20. queryDatabase(sql,(err,results)=>{
  21. if(err){
  22. res.status(500).json({ error: '查询数据失败' });
  23. return;
  24. }
  25. // 定义表头数组,与数据库字段对应
  26. const headers = ["序号", "群用户名称", "入群的用户id", "入群名称", "入群时间"];
  27. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  28. const dataWithHeaders = [headers].concat(results.map(item => [
  29. item.id,
  30. item.join_user_name,
  31. item.join_user_id,
  32. item.join_content,
  33. // 将时间戳转换为年月日格式
  34. new Date(item.join_group_time * 1000).toLocaleDateString()
  35. ]));
  36. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  37. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  38. const workbook = XLSX.utils.book_new();
  39. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  40. // 将工作簿对象转换为二进制数据
  41. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  42. // 设置响应头,告知浏览器这是一个Excel文件下载
  43. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  44. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  45. // 将Excel文件数据发送给浏览器
  46. res.send(excelBuffer);
  47. })
  48. })
  49. //下载删除朋友表格的excel接口
  50. router.get('/delete_friend',function(req,res,next){
  51. const sql = 'SELECT * FROM delete_friend_table';
  52. queryDatabase(sql,(err,results)=>{
  53. if(err){
  54. res.status(500).json({ error: '查询数据失败' });
  55. return;
  56. }
  57. // 定义表头数组,与数据库字段对应
  58. const headers = ["序号", "删除的用户名", "删除用户id", "删除内容", "删除时间"];
  59. // 将查询结果处理为包含表头的二维数组形式,方便转换为Excel工作表
  60. const dataWithHeaders = [headers].concat(results.map(item => [
  61. item.id,
  62. item.delete_user_name,
  63. item.delete_user_id,
  64. item.delete_content,
  65. // 将时间戳转换为年月日格式
  66. new Date(item.delete_time * 1000).toLocaleDateString()
  67. ]));
  68. // 使用xlsx库将处理后的数据转换为Excel工作簿对象
  69. const worksheet = XLSX.utils.aoa_to_sheet(dataWithHeaders);
  70. const workbook = XLSX.utils.book_new();
  71. XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
  72. // 将工作簿对象转换为二进制数据
  73. const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
  74. // 设置响应头,告知浏览器这是一个Excel文件下载
  75. res.setHeader('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  76. res.setHeader('Content-Disposition', 'attachment; filename="join_group_table.xlsx"');
  77. // 将Excel文件数据发送给浏览器
  78. res.send(excelBuffer);
  79. })
  80. })
  81. module.exports = router;