当前位置: 首页 > 科技观察

开源ExcelParserandGeneratorforJavaScript

时间:2023-03-15 23:44:02 科技观察

介绍xlsx-populate是一个用JavaScript编写的ExcelXLSX解析器/生成器,支持Node.js和浏览器,具有jQuery和D3.js表单编写方法,加密功能和能力保持现有工作簿功能和样式不变!Githubhttps://github.com/dtjohnson/xlsx-populate获取xlsx-populatenpminstallxlsx-populatexlsx-populate使用ES6功能,因此仅支持Node.jsv4+使用例如xlsx-populate有一个广泛的API用于处理Excel工作簿填充数据要用数据填充工作簿,首先加载一个数据(空白、数据或文件)。然后您可以访问工作簿中的工作表和单元格进行操作。constXlsxPopulate=require('xlsx-populate');//加载一个新的空白工作簿XlsxPopulate.fromBlankAsync().then(workbook=>{//修改工作簿.workbook.sheet("Sheet1").cell("A1").value("Thisisneat!");//写入文件returnworkbook.toFileAsync("./out.xlsx");});解析数据constXlsxPopulate=require('xlsx-populate');//加载当前有一个workbookXlsxPopulate.fromFileAsync("./Book1.xlsx").then(workbook=>{//修改workbook.constvalue=workbook.sheet("Sheet1").cell("A1").value();console.log(value);});范围操作xlsx-populate还支持单元格范围以允许一次解析/操作多个单元格。constr=workbook.sheet(0).range("A1:C3");//将所有单元格值设置为相同的值:r.value(5);//使用二维数组设置值:r.value([[1,2,3],[4,5,6],[7,8,9]]);//使用回调函数设置值:r.value((cell,ri,ci,range)=>Math.random());一个常见的用例是一次简单地提取所有值。这可以使用Sheet.usedRange方法轻松完成。constvalues=workbook.sheet("Sheet1").usedRange().value();或者,可以在只需要左上角单元格的范围内设置值:workbook.sheet(0).cell("A1").value([[1,2,3],[4,5,6],[7,8,9]]);行列操作sheet.column("B").width(25)。隐藏(假);constcell=sheet.row(5).cell(3);ManageSheet//按索引获取工作表constsheet1=workbook.sheet(0);//按名称获取工作表constsheet2=workbook.sheet("Sheet2");//以数组形式获取所有工作表constsheets=workbook.sheets();您可以添加一个新工作表:constnewSheet1=workbook.addSheet('New1');constnewSheet2=workbook.addSheet('New2',1);constnewSheet3=workbook.addSheet('New3','Sheet1');constsheet=workbook.sheet('Sheet1');constnewSheet4=workbook.addSheet('New4',sheet);重命名constsheet=workbook.sheet(0).name("newsheetname");移动workbook.moveSheet("Sheet1");workbook.moveSheet("Sheet1",2);workbook.moveSheet("Sheet1","Sheet2");delete//获取活动表constsheet=workbook.activeSheet();//检查当前工作表是否活动sheet.active()//returnstrue或false//激活工作表sheet.active(true);//激活workbook.activeSheet("Sheet2");Excel支持创建引用地址,为公式或常量定义名称。这些定义的名称可以应用于整个工作簿或仅应用于单个工作表。xlsx-populate支持查找引用单元格或范围的已定义名称。(取消引用其他名称会导致错误。)如果将数据填充到已知模板中,定义的名称特别有用。//找到工作簿范围的名称并将其值设置为5.workbook.definedName("somename").value(5);//找到第一个表的名称并将其值设置为“foo”。workbook.sheet(0).definedName("someothername").value("foo");//创建/修改工作簿作用域定义的名称workbook.definedName("somename","TRUE");//删除worksheet范围的定义名称:workbook.sheet(0).definedName("somename",null);查找和替换可以搜索工作簿或工作表的单元格中出现的文本并有选择地替换它们//在工作中查找书中出现的所有文本“foo”并将它们替换为“bar”。workbook.find("foo","bar");//返回匹配单元格的数组//查找匹配项,但不替换。workbook.find("foo");//只有第一张纸。workbook.sheet(0).find("foo");//检查特定单元格是否匹配值。workbook.sheet("Sheet1").cell("A1").find("foo");//返回true或false//使用RegExp将所有小写字母替换为大写workbook.find(/[a-z]+/g,match=>匹配.toUpperCase());stylexlsx-populate支持多种单元格格式//获取单一样式constbold=cell.style("bold");//true//获取多种样式conststyles=cell.style(["bold","italic"]);//{bold:true,italic:true}//设置单个样式cell.style("bold",true);//设置多个样式cell.style({bold:true,italic:true});富文本可以读取和修改现有RTF单元格上的RTF://假设A1是富文本单元格constRichText=require('xlsx-Populate').RichText;constcell=workbook.sheet(0).cell('A1');cell.value()instanceofRichText//returnstrueconstrichtext=cell.value();//获取连接文本richtext.text();//循环遍历每个richtextfragmentfor(leti=0;i{//...});同样写一个加密工作簿:workbook.toFileAsync("./out.xlsx",{password:"S3cret!"});...xlsx-populate的功能总结不只是上面介绍的内容,由于篇幅有限,更多功能可以参考Github,有详细的功能代码片段和API文档,尽情享受吧!