当前位置:首页 > JavaScript

js报表实现

2026-03-02 08:27:37JavaScript

使用原生JavaScript实现报表

创建HTML结构用于展示报表数据,通过JavaScript动态生成表格内容。示例代码展示如何将数据数组渲染为表格:

// 示例数据
const reportData = [
  { id: 1, name: '产品A', sales: 1500 },
  { id: 2, name: '产品B', sales: 2100 },
  { id: 3, name: '产品C', sales: 800 }
];

function generateReport() {
  const table = document.createElement('table');
  table.className = 'report-table';

  // 创建表头
  const thead = document.createElement('thead');
  const headerRow = document.createElement('tr');
  Object.keys(reportData[0]).forEach(key => {
    const th = document.createElement('th');
    th.textContent = key;
    headerRow.appendChild(th);
  });
  thead.appendChild(headerRow);
  table.appendChild(thead);

  // 创建表格内容
  const tbody = document.createElement('tbody');
  reportData.forEach(item => {
    const row = document.createElement('tr');
    Object.values(item).forEach(value => {
      const td = document.createElement('td');
      td.textContent = value;
      row.appendChild(td);
    });
    tbody.appendChild(row);
  });
  table.appendChild(tbody);

  document.getElementById('report-container').appendChild(table);
}

使用Chart.js实现可视化报表

安装Chart.js库后创建数据可视化图表。以下示例展示如何创建柱状图报表:

import Chart from 'chart.js/auto';

const ctx = document.getElementById('salesChart').getContext('2d');
const chart = new Chart(ctx, {
  type: 'bar',
  data: {
    labels: ['一月', '二月', '三月', '四月'],
    datasets: [{
      label: '销售额',
      data: [12000, 19000, 15000, 18000],
      backgroundColor: 'rgba(54, 162, 235, 0.5)',
      borderColor: 'rgba(54, 162, 235, 1)',
      borderWidth: 1
    }]
  },
  options: {
    responsive: true,
    scales: {
      y: {
        beginAtZero: true
      }
    }
  }
});

使用DataTables实现交互式报表

引入DataTables库创建功能丰富的交互式表格报表。示例代码展示基本实现:

$(document).ready(function() {
  $('#report-table').DataTable({
    ajax: {
      url: '/api/report-data',
      dataSrc: ''
    },
    columns: [
      { data: 'id' },
      { data: 'name' },
      { data: 'department' },
      { data: 'score' }
    ],
    dom: 'Bfrtip',
    buttons: [
      'copy', 'csv', 'excel', 'pdf', 'print'
    ]
  });
});

报表数据格式化处理

对报表数据进行格式化显示,增加可读性。示例展示数值和日期的格式化方法:

function formatReportData(data) {
  return data.map(item => {
    return {
      ...item,
      sales: formatCurrency(item.sales),
      date: formatDate(item.date),
      progress: renderProgressBar(item.progress)
    };
  });
}

function formatCurrency(value) {
  return new Intl.NumberFormat('zh-CN', {
    style: 'currency',
    currency: 'CNY'
  }).format(value);
}

function formatDate(dateString) {
  return new Date(dateString).toLocaleDateString('zh-CN');
}

响应式报表设计

使用CSS媒体查询确保报表在不同设备上正常显示:

.report-table {
  width: 100%;
  border-collapse: collapse;
}

@media (max-width: 768px) {
  .report-table thead {
    display: none;
  }

  .report-table tr {
    display: block;
    margin-bottom: 1rem;
    border: 1px solid #ddd;
  }

  .report-table td {
    display: block;
    text-align: right;
    padding-left: 50%;
    position: relative;
  }

  .report-table td::before {
    content: attr(data-label);
    position: absolute;
    left: 0;
    width: 50%;
    padding-left: 15px;
    font-weight: bold;
    text-align: left;
  }
}

报表数据导出功能

实现将报表数据导出为各种格式的功能:

js报表实现

function exportToExcel(data, fileName) {
  const ws = XLSX.utils.json_to_sheet(data);
  const wb = XLSX.utils.book_new();
  XLSX.utils.book_append_sheet(wb, ws, "Sheet1");
  XLSX.writeFile(wb, `${fileName}.xlsx`);
}

function exportToPDF(tableId, fileName) {
  const element = document.getElementById(tableId);
  html2pdf()
    .from(element)
    .save(fileName);
}

标签: 报表js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…