转载自我的个人主页
在开发ExcelWeb插件的时候,一大亮点就是可以在web项目中操作Excel,读取Excel的内容,也可以将服务端的数据写入的 Excel中,大大方便的用户使用Excel,提高工作效率
Ranges表示Excel的区域,例如一个单元格的区域是=A1,多个单元格的区域,B1:B4表示连续的4个单元格,对Excel 内容的读写,即是对Ranges的读写。
numberFormat,二维数组,区域的格式,有文本、日期、数值等,和Excel右击设置单元格的格式里所有的格式一致
格式 | 值 |
---|---|
General | General |
Number | 0 |
Currency | $#,##0.00;[Red]$#,##0.00 |
Accounting | ($* #,##0.00);($* (#,##0.00);($* "-"??);(@_) |
Date | m/d/yy |
Time | [$-F400]h:mm:ss am/pm |
Percentage | 0.00% |
Fraction | # ?/? |
Scientific | 0.00E+00 |
Text | @ |
Special | ;; |
Custom | #,##0_);Red |
来源 | Stack Overflow上的回答 |
准备工作:
npm install excel-addin --save
<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
const Office = window.Office
Office.initialize = () => {
//初始化内容
}
//其中context表示Excel的上下文,操作Excel的东西均通过该参数
Excel.run(function(context) {
//此处写操作Excel的方法
//处理完之后要提交,Excel才会识别,另外所有的//读写数据的操作均在,
//context.sync().then(=>{
//此处读写数据
})
return context.sync()
}
write: function() {
Excel.run(function(context) {
//获取指定名字的工作薄sheet
// var sheet = context.workbook.worksheets.getItem(‘sheetName‘)
//获取当前活动工作薄
var sheet = context.workbook.worksheets.getActiveWorksheet()
var data = [
[‘Product‘, ‘Qty‘, ‘Unit Price‘, ‘Total Price‘],
[‘Almonds‘, ‘2‘, ‘7.5‘, ‘15‘],
[‘Coffee‘, ‘1‘, ‘34.5‘, ‘34.5‘],
[‘Chocolate‘, ‘5‘, ‘9.56‘, ‘47.8‘],
[‘‘, ‘‘, ‘‘, ‘97.3‘]
]
//此二维数组的长度要和数据的保持一致,否则无效
var formats = [
[‘@‘, ‘@‘, ‘@‘, ‘@‘], //设置格式为文本
[‘0.00‘, ‘0.00‘, ‘0.00‘, ‘0.00‘],
[‘0.00‘, ‘0.00‘, ‘0.00‘, ‘0.00‘],
[‘0.00‘, ‘0.00‘, ‘0.00‘, ‘0.00‘],
[‘0.00‘, ‘0.00‘, ‘0.00‘, ‘0.00‘]
]
var range = sheet.getRange(‘A1:D5‘)
//选中该区域
range.select()
// 设置背景色和字体
range.format.fill.color = ‘#4472C4‘
range.format.font.color = ‘white‘
//设置区域的格式
range.numberFormat = formats
//表示加载values属性,如果不加载在下面是不可以使用的
range.load(‘values‘)
return context.sync().then(function() {
//写入方法必须在该方法内执行才有效
range.values = data
})
}).catch(_this.errorHandler)
},
read: function() {
let _this = this
Excel.run(function(context) {
//获取指定名字的工作薄sheet
// var sheet = context.workbook.worksheets.getItem(‘sheetName‘)
// 获取当前选中的单元格
var range = context.workbook.getSelectedRange()
//获取当前选中的单元格
//表示加载以下属性,如果不加载在下面是不可以使用的
range.load(‘values‘)
range.load(‘address‘)
range.load(‘formulas‘)
range.load(‘text‘)
return context.sync().then(function() {
//写入方法必须在该方法内执行才有效
_this.content = {
values: range.values,
formulas: range.formulas,
address: range.address,
texts: range.text
}
console.log(_this.content)
})
}).catch(_this.errorHandler)
}
deleteOne: function() {
let _this = this
Excel.run(function(context) {
//获取指定名字的工作薄sheet
// var sheet = context.workbook.worksheets.getItem(‘sheetName‘)
// 获取当前选中的单元格
var sheet = context.workbook.worksheets.getActiveWorksheet()
var range = sheet.getRange(‘A2:D2‘)
range.delete(Excel.DeleteShiftDirection.up)
//提交操作
return context.sync()
}).catch(_this.errorHandler)
},
clear: function() {
let _this = this
Excel.run(function(context) {
//获取指定名字的工作薄sheet
// var sheet = context.workbook.worksheets.getItem(‘sheetName‘)
// 获取当前选中的单元格
var sheet = context.workbook.worksheets.getActiveWorksheet()
var range = sheet.getRange(‘A1:D4‘)
range.clear()
//提交操作
return context.sync()
}).catch(_this.errorHandler)
},
原文:https://www.cnblogs.com/alvin-niu/p/9690179.html