使用onlyoffice的docbuilder生成office文件
由 0x400 发布于
```
var requestHost = this.request.getRequestURL().toString().split("x_program_center")[0];
var docbuilderUrl = "http://onlyoffice/docbuilder"; //这里填写的onlyoffice 的docbuilder地址
var docbuilderFile = requestHost + "onlyoffice_builder/tmp.docbuilder";
var code = `
// 创建文档实例
builder.CreateFile("xlsx");
var oWorksheet = Api.GetActiveSheet();
oWorksheet.SetName("销售数据");
// ==================== 填充标题行 ====================
var headers = ["产品名称", "季度销量", "单价", "销售额"];
// 逐个单元格填充标题
oWorksheet.GetRange("A1").SetValue(headers[0]); // 产品名称
oWorksheet.GetRange("B1").SetValue(headers[1]); // 季度销量
oWorksheet.GetRange("C1").SetValue(headers[2]); // 单价
oWorksheet.GetRange("D1").SetValue(headers[3]); // 销售额
// ==================== 填充数据行 ====================
// 数据内容
var data = [
["笔记本电脑", 150, 1200, "=B2*C2"],
["显示器", 80, 300, "=B3*C3"],
["键盘", 200, 50, "=B4*C4"]
];
// 逐个单元格填充数据
oWorksheet.GetRange("A2").SetValue(data[0][0]); // 笔记本电脑
oWorksheet.GetRange("B2").SetValue(data[0][1]); // 150
oWorksheet.GetRange("C2").SetValue(data[0][2]); // 1200
oWorksheet.GetRange("D2").SetValue(data[0][3]); // =B2*C2
oWorksheet.GetRange("A3").SetValue(data[1][0]); // 显示器
oWorksheet.GetRange("B3").SetValue(data[1][1]); // 80
oWorksheet.GetRange("C3").SetValue(data[1][2]); // 300
oWorksheet.GetRange("D3").SetValue(data[1][3]); // =B3*C3
oWorksheet.GetRange("A4").SetValue(data[2][0]); // 键盘
oWorksheet.GetRange("B4").SetValue(data[2][1]); // 200
oWorksheet.GetRange("C4").SetValue(data[2][2]); // 50
oWorksheet.GetRange("D4").SetValue(data[2][3]); // =B4*C4
// ==================== 格式化数据区域 ====================
// 设置数字格式
oWorksheet.GetRange("B2:B4").SetNumberFormat("#,##0"); // 整数格式
oWorksheet.GetRange("C2:D4").SetNumberFormat("¥#,##0.00"); // 货币格式
builder.SaveFile("xlsx", "aa.xlsx");
builder.CloseFile();
`;
var action = this.Actions.load("x_onlyofficefile_assemble_control");
action.OnlyofficeAction.createDocbuilder("tmp",{
"htmlContent" : code
},function( json ){
}.bind(this)
);
this.getToken = function(json){
var token;
var data = {
"tokenText" : JSON.stringify(json)
}
var action = this.Actions.load("x_onlyofficefile_assemble_control");
action.OnlyofficeAction.token(data,function( json ){
token = json.data.value;
}.bind(this));
return token;
}
var NameValuePair = Java.type('com.x.base.core.project.bean.NameValuePair');
var ArrayList = Java.type('java.util.ArrayList');
var HttpConnection = Java.type("com.x.base.core.project.connection.HttpConnection");
var heads = new ArrayList();
var p1 = new NameValuePair('Content-Type', 'application/json; charset=utf-8');
heads.add(p1);
var p2 = new NameValuePair('Accept', 'application/json');
heads.add(p2);
var params = {
"async": false,
"url" : docbuilderFile,
}
params.token = this.getToken(params);
var docContent =JSON.stringify(params);
var resp = HttpConnection.postAsString(docbuilderUrl, heads ,docContent);
var respObj = JSON.parse(resp);
return respObj;
```
##执行接口返回
```
{
"type": "success",
"data": {
"value": {
"key": "bld_f0f748eb541c3482",
"urls": {
"aa.xlsx": "http://onlyofficeenterprise.o2oa.net/cache/files/data/bld_f0f748eb541c3482/output/aa.xlsx/aa.xlsx?md5=J7BxSv6wZuLZrGDAmqiATg&expires=1743306297&shardkey=-2040923637&filename=aa.xlsx"
},
"end": true
}
},
"message": "",
"date": "2025-03-30 11:29:55",
"spent": 1062,
"size": -1,
"count": 0,
"position": 0
}
```
##excel 打开效果

评论