[Mini programa WeChat] Exporte informes de Excel y compártalos, use la biblioteca xlsx para generar Excel, use echars para insertar gráficos y use pdfmake para exportar a archivos PDF

Escriba aquí el título del directorio

Generar EXCEL

Para exportar y compartir un informe de Excel en el subprograma WeChat, puede usar una biblioteca de terceros xlsxpara generar un archivo de Excel, usar wx.saveFileel método para guardar el archivo localmente y luego usar wx.shareFileel método para compartir el archivo.

El siguiente es un código de muestra que demuestra cómo exportar y compartir un informe de Excel en el subprograma WeChat:

  1. Primero, instale las bibliotecas dependientes xlsx, puede usar npm para instalar:
npm install xlsx
  1. Introduzca la biblioteca en la página del subprograma xlsxy defina un método para exportar informes de Excel:
// 引入依赖库
const XLSX = require('xlsx');

// 定义导出 Excel 报表的方法
function exportExcel(data, filename) {
    
    
  const workbook = XLSX.utils.book_new();
  const sheet = XLSX.utils.aoa_to_sheet(data);

  XLSX.utils.book_append_sheet(workbook, sheet, 'Sheet1');

  const excelBuffer = XLSX.write(workbook, {
    
     bookType: 'xlsx', type: 'array' });
  const filePath = `${
      
      wx.env.USER_DATA_PATH}/${
      
      filename}.xlsx`;

  wx.saveFile({
    
    
    tempFilePath: filePath,
    filePath: filePath,
    success: function(res) {
    
    
      const savedFilePath = res.savedFilePath;

      wx.shareFile({
    
    
        filePath: savedFilePath,
        success: function(res) {
    
    
          console.log('分享成功');
        },
        fail: function(error) {
    
    
          console.log('分享失败', error);
        }
      });
    },
    fail: function(error) {
    
    
      console.log('保存文件失败', error);
    }
  });
}

En el código de ejemplo anterior, presentamos requirela xlsxbiblioteca a través de la declaración. Luego, se define un método llamado exportExcel, que acepta dos parámetros: datalos datos a exportar y filenameel nombre del archivo exportado.

En exportExcelel método, usamos xlsxla biblioteca para convertir los datos al formato Excel y usamos XLSX.writeel método para escribir el libro en una matriz. Luego, use wx.saveFileel método para guardar la matriz en un archivo local y wx.shareFileel método para compartir el archivo.

A continuación, puede llamar exportExcelal método para exportar el informe de Excel y compartir el archivo:

// 示例数据
const data = [
  ['姓名', '年龄', '性别'],
  ['张三', 25, '男'],
  ['李四', 30, '女'],
  ['王五', 28, '男']
];

// 调用导出 Excel 报表的方法
exportExcel(data, '报表');

En el ejemplo anterior, definimos una datamatriz denominada que contiene los datos que se van a exportar. Luego, llame exportExcelal método para exportar el informe de Excel y especifique el nombre del archivo '报表'.

Tenga en cuenta que el código de muestra anterior es solo de referencia y es posible que sea necesario ajustar la implementación específica de acuerdo con sus necesidades reales.

Insertar resúmenes y gráficos

Utilice echartsla biblioteca para generar gráficos.

El siguiente es un código de muestra que demuestra cómo exportar un informe de Excel e insertar un gráfico en el resumen en el subprograma WeChat:

  1. Primero, instale las bibliotecas dependientes xlsxy echartspuede usar npm para instalar:
npm install xlsx echarts
  1. xlsxIntroduzca la biblioteca y en la página del subprograma echartsy defina un método para generar datos del gráfico:
// 引入依赖库
const XLSX = require('xlsx');
const echarts = require('echarts');

// 定义生成图表数据的方法
function generateChartData() {
    
    
  const xAxisData = ['张三', '李四', '王五', '赵六'];
  const seriesData = [85, 90, 95, 80];

  return {
    
    
    xAxis: {
    
    
      type: 'category',
      data: xAxisData
    },
    yAxis: {
    
    
      type: 'value'
    },
    series: [{
    
    
      data: seriesData,
      type: 'bar'
    }]
  };
}

En el código de ejemplo anterior, introdujimos requirelas xlsxbibliotecas y echartsa través de la declaración. Luego, se define un generateChartDatamétodo llamado , que se utiliza para generar los datos del gráfico.

En generateChartDatael método, definimos las matrices xAxisDatay seriesData, que representan los datos del eje x y del eje y del gráfico respectivamente. Luego, estos datos se ensamblan en un objeto que contiene la información de configuración del gráfico.

A continuación, puede utilizar echartsla biblioteca para generar el gráfico e insertar los datos del gráfico en el resumen del archivo de Excel:

// 定义导出 Excel 报表的方法
function exportExcel(data, filename) {
    
    
  const workbook = XLSX.utils.book_new();
  const sheet = XLSX.utils.aoa_to_sheet(data);

  // 生成图表数据
  const chartData = generateChartData();

  // 创建 chart sheet
  const chartSheet = XLSX.utils.aoa_to_sheet([
    ['姓名', '成绩'],
    ['张三', chartData.series[0].data[0]],
    ['李四', chartData.series[0].data[1]],
    ['王五', chartData.series[0].data[2]],
    ['赵六', chartData.series[0].data[3]],
  ]);

  // 在 chart sheet 中插入图表
  const chart = echarts.init(document.createElement('canvas'), null, {
    
    
    devicePixelRatio: 2
  });
  const option = chartData;
  chart.setOption(option);
  const chartImage = new Image();
  chartImage.src = chart.getDataURL({
    
    
    type: 'png',
    pixelRatio: 2
  });
  XLSX.utils.sheet_add_image(chartSheet, chartImage, {
    
    
    tl: {
    
     col: 0, row: 6 },
    br: {
    
     col: 5, row: 18 }
  });

  // 添加 sheets 到 workbook
  XLSX.utils.book_append_sheet(workbook, sheet, '数据');
  XLSX.utils.book_append_sheet(workbook, chartSheet, '汇总');

  // 生成 Excel 文件
  const excelBuffer = XLSX.write(workbook, {
    
     bookType: 'xlsx', type: 'array' });
  const filePath = `${
      
      wx.env.USER_DATA_PATH}/${
      
      filename}.xlsx`;

  // 保存文件并分享
  wx.saveFile({
    
    
    tempFilePath: filePath,
    filePath: filePath,
    success: function(res) {
    
    
      const savedFilePath = res.savedFilePath;

      wx.shareFile({
    
    
        filePath: savedFilePath,
        success: function(res) {
    
    
          console.log('分享成功');
        },
        fail: function(error) {
    
    
          console.log('分享失败', error);
        }
      });
    },
    fail: function(error) {
    
    
      console.log('保存文件失败', error);
    }
  });
}

En el código de ejemplo anterior, agregamos exportExcelalgo de lógica adicional en el método para generar los datos del gráfico e insertar el gráfico en el resumen del archivo de Excel.

Primero, creamos una chartSheethoja de gráfico llamada y utilizamos XLSX.utils.aoa_to_sheetel método para convertir los datos del gráfico en datos de hoja. Luego, use echartsla biblioteca para crear una instancia de gráfico y establecer los elementos de configuración del gráfico. A continuación, utilice chart.getDataURLel método para convertir el gráfico en una imagen y utilice XLSX.utils.sheet_add_imageel método para insertar la imagen del gráfico en la hoja del gráfico.

Finalmente, agregamos la hoja de datos y la hoja del gráfico al libro de trabajo y XLSX.writeescribimos el libro de trabajo en una matriz mediante el método. Luego, use wx.saveFileel método para guardar la matriz en un archivo local y wx.shareFileel método para compartir el archivo.

A continuación, puede llamar exportExcelal método para exportar el informe de Excel y compartir el archivo:

// 示例数据
const data = [
  ['姓名', '年龄', '性别'],
  ['张三', 25, '男'],
  ['李四', 30, '女'],
  ['王五', 28, '男']
];

// 调用导出 Excel 报表的方法
exportExcel(data, '报表');

En el ejemplo anterior, definimos una datamatriz denominada que contiene los datos que se van a exportar. Luego, llame exportExcelal método para exportar el informe de Excel y especifique el nombre del archivo '报表'.

Tenga en cuenta que el código de muestra anterior es solo de referencia y es posible que sea necesario ajustar la implementación específica de acuerdo con sus necesidades reales.

Exportar a PDF

Para convertir el archivo Excel generado a formato PDF, puede utilizar bibliotecas de terceros xlsxy archivos pdfmake. Primero, utilícelo xlsxpara leer el archivo de Excel como datos y luego utilícelo para pdfmakeconvertir los datos al formato PDF.

Aquí hay un código de muestra que demuestra cómo convertir el archivo de Excel generado a PDF:

  1. Primero, instale las bibliotecas dependientes xlsxy pdfmakepuede usar npm para instalar:
npm install xlsx pdfmake
  1. xlsxIntroduzca la biblioteca y en la página del subprograma pdfmakey defina un método para convertir archivos de Excel a PDF:
// 引入依赖库
const XLSX = require('xlsx');
const pdfMake = require('pdfmake/build/pdfmake');
const pdfFonts = require('pdfmake/build/vfs_fonts');

// 注册字体
pdfMake.vfs = pdfFonts.pdfMake.vfs;

// 定义将 Excel 文件转换为 PDF 的方法
function convertToPDF(filePath, callback) {
    
    
  // 读取 Excel 文件
  const wb = XLSX.readFile(filePath);

  // 将 Excel 数据转换为 JSON 对象
  const sheetName = wb.SheetNames[0];
  const worksheet = wb.Sheets[sheetName];
  const jsonData = XLSX.utils.sheet_to_json(worksheet, {
    
     header: 1 });

  // 将 JSON 对象转换为 PDF
  const docDefinition = {
    
    
    content: [
      {
    
    
        table: {
    
    
          body: jsonData
        }
      }
    ]
  };

  const pdfDocGenerator = pdfMake.createPdf(docDefinition);
  pdfDocGenerator.getBlob((blob) => {
    
    
    if (typeof callback === 'function') {
    
    
      callback(blob);
    }
  });
}

En el código de ejemplo anterior, introdujimos requirelas xlsxbibliotecas y pdfmakea través de la declaración. Luego, registramos los archivos de fuentes para usarlos al generar archivos PDF.

A continuación se define un método llamado convertToPDF, que acepta un parámetro filePathque indica la ruta del archivo Excel a convertir. En el método, leemos xlsxel archivo Excel como datos usando el método y XLSX.utils.sheet_to_jsonconvertimos los datos en un objeto JSON usando el método.

Luego usamos pdfmakepara convertir el objeto JSON a PDF. Creamos un docDefinitionobjeto cuyas contentpropiedades definen la estructura del contenido del PDF. En este ejemplo, usamos una tabla para mostrar datos de Excel.

Finalmente, pdfMake.createPdfcreamos un generador de documentos PDF a través del método y usamos getBlobel método para convertir el PDF generado en un objeto Blob y devolverlo a través de la función de devolución de llamada.

A continuación, puede utilizar convertToPDFel método para convertir el archivo de Excel generado a PDF y realizar operaciones adicionales, como guardarlo localmente o compartirlo:

// 调用将 Excel 文件转换为 PDF 的方法
convertToPDF('path/to/excel.xlsx', (pdfBlob) => {
    
    
  // 在这里可以进行进一步的操作,比如保存到本地或分享
});

En el ejemplo anterior, llamamos convertToPDFal método y le pasamos la ruta al archivo de Excel. En la función de devolución de llamada, puede realizar más operaciones en el objeto PDF Blob generado, como guardarlo localmente o compartirlo.

Tenga en cuenta que el código de muestra anterior es solo de referencia y es posible que sea necesario ajustar la implementación específica de acuerdo con sus necesidades reales. Además, el miniprograma puede tener restricciones en las operaciones del sistema de archivos y es posible que no pueda guardar ni compartir archivos PDF directamente, por lo que es posible que deba realizar ajustes según la situación real.

Supongo que te gusta

Origin blog.csdn.net/gao511147456/article/details/132009965
Recomendado
Clasificación