鸿蒙6开发保存Excel文件

概述:

本文采用exceljs,方法来源于鸿蒙的第三方库,教程地址:https://ohpm.openharmony.cn/#/cn/detail/@archermind%2Fexceljs

因Excel读取简单,所以没有描述读取操作。

软硬件平台:

运行测试平台:鸿蒙6.0.0(Mate 70 Pro模拟器),即API20

开发平台Dev Echo:版本6.0.0.858

因鸿蒙设计不同版本API函数不能完全向下兼容,本文仅适用于API20,对于其他版本可能会出错

配置环境:

需要nodejs环境,我找的最新版,地址:https://nodejs.org/dist/v24.11.1/node-v24.11.1-x64.msi

按照默认安装好nodejs,然后配置好环境变量,使node.exe和ohpm.bat能直接在命令行访问到

我按照默认安装的,在Path中添加了下面的两个环境变量:

C:\Program Files\nodejs

C:\Program Files\Huawei\DevEco Studio\tools\ohpm\bin

安装包:

因导入相关包报错:import ExcelJS, { Cell, Column } from '@archermind/exceljs'

根据教程,在命令行执行如下命令:

ohpm install @archermind/exceljs

功能代码:

需要打开文件读写权限,此功能这里不描述了。关键地方加了注释,我相信应该很容易看懂

typescript 复制代码
import ExcelJS, { Cell, Column } from '@archermind/exceljs'
export default class ExcelOp {
public static SaveExcel(strFileName: string, titles:string[], datas:string[][]) {
    const workbook = new ExcelJS.Workbook();
    const worksheet = workbook.addWorksheet('test');
    let indexRow:number = 0;
    let indexColumn:number = 0;
    let cell:Cell;

    /* 标题风格 */
    const styleHead:Partial<ExcelJS.Style> = {
      border: {
        top: { style: 'thin', color: { argb: 'FFD3D3D3' } },
        left: { style: 'thin', color: { argb: 'FFD3D3D3' } },
        bottom: { style: 'thin', color: { argb: 'FFD3D3D3' } },
        right: { style: 'thin', color: { argb: 'FFD3D3D3' } }
      },
      fill : {
        type: 'pattern',
        pattern: 'solid',
        fgColor: { argb: 'FFAEEEEE' }
      },
      font : {
        name: '楷体',
        family: 2,
        size: 12,
        bold: true,
        italic: true,
        color: { argb: 'FF2F4F4F' }
      },
      alignment: {
        vertical: 'middle',
        horizontal: 'left'
      },
    };
    /* 奇数列风格 */
    const styleOddColumn :Partial<ExcelJS.Style> = {
      fill : {
        type: 'pattern',
        pattern: 'solid',
        fgColor: { argb: 'FFADFF2F' }
      },
    };
    /* 偶数列风格 */
    const styleEvenColumn :Partial<ExcelJS.Style> = {
      fill : {
        type: 'pattern',
        pattern: 'solid',
        fgColor: { argb: 'FFADD8E6' }
      },
    };

    /* 设置列宽度,运行没问题,暂时屏蔽
    worksheet.columns = [
      { width: 16 },
      { width: 16 },
      { width: 16 },
    ];*/


    indexRow = 0;
    /* 设置标题文本和风格 */
    for (indexColumn = 0; indexColumn < titles.length; indexColumn++) {
      cell = worksheet.getCell(String.fromCharCode(65 + indexColumn) + (indexRow + 1).toString());
      cell.value = titles[indexColumn];
      cell.style = styleHead;
    }

    /* 设置类容文本和风格 */
    for (indexRow = 0; indexRow < datas.length; indexRow++) {
      for (indexColumn = 0; indexColumn < datas[indexRow].length; indexColumn++) {
        cell = worksheet.getCell(String.fromCharCode(65 + indexColumn) + (indexRow + 2).toString());
        cell.style = ((indexColumn % 2) == 0) ? styleOddColumn : styleEvenColumn;
        cell.value = datas[indexRow][indexColumn];
      }
    }

    /* 写入到Excel文件 */
    workbook.xlsx.writeFile(strFileName);
  }
}

测试代码:

typescript 复制代码
ExcelOp.SaveExcel('/storage/Users/currentUser/Documents/test.xlsx',
      ['t1', 't2', 't3'], [['10', '11', '12'], ['20', '21', '22'], ['30', '31', '32']]);

测试结果:

生成了excel文件

相关推荐
lilian2333 小时前
HarmonyOS 7 新特性(二十五)|智慧手势:意图识别与误触治理
华为·harmonyos
贾伟康5 小时前
【时光清单|14】HarmonyOS ArkTS 主导航实战:统一页面入口、返回路径和参数校验
harmonyos·arkts·arkui·navigation·路由管理
贾伟康10 小时前
【时光清单|05】HarmonyOS ArkTS 倒计时卡片实战:适配 2x2、2x4 与 4x4 多尺寸
harmonyos·arkts·arkui·服务卡片·formextensionability
小雨青年11 小时前
【HarmonyOS 7 悬浮页签深度实战】07 折叠屏、平板与宽窗口的布局适配
华为·harmonyos
熊猫钓鱼>_>13 小时前
鸿蒙AI Agent新范式:从“对话式辅助”到“工程化代理”的Harness架构实战解析
人工智能·笔记·学习·华为·架构·harmonyos
大锅盖113 小时前
HarmonyOS ArkUI 非遗纹样素材平台设计复盘:朱砂宣纸与鎏金黛蓝的文化守护
华为·harmonyos
2501_9197490313 小时前
华为鸿蒙管理学习生活与工作APP—小羊管理
学习·华为·生活·harmonyos·鸿蒙
贾伟康13 小时前
【时光清单|20】HarmonyOS ArkTS AppGallery 发布复查实战:核对包名、版本、设备、素材和离线声明
harmonyos·arkts·agc·appgallery·发布复查
fengkai454514 小时前
三、存储基础知识
华为·云计算·存储
一晌小贪欢14 小时前
python-第15天:Python 列表推导式
开发语言·python·excel·数据可视化·python办公