转载自我的个人主页

前言

在开发ExcelWeb插件的时候,一大亮点就是可以在web项目中操作Excel,读取Excel的内容,也可以将服务端的数据写入的 Excel中,大大方便的用户使用Excel,提高工作效率

Ranges

Ranges表示Excel的区域,例如一个单元格的区域是=A1,多个单元格的区域,B1:B4表示连续的4个单元格,对Excel 内容的读写,即是对Ranges的读写。

Ranges的属性

  • address,表示Ranges的地址,例如:A1,B1:B4

  • values,二维数组,表示区域的实际值

  • texts,二维数组,表示区域的展示值

  • formulas,二维数组,表示区域的公式,excel可以使用公式,使用之后,看到的值是公式计算之后的值,如果想要知道使用了那些公式,就需要使用formulas属性

  • format,区域的字体格式,可以该表文字字体,颜色,也可以改变区域的背景色。

  • 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上的回答

Ranges的方法

  • load(),表示接下来你要使用哪个属性,需要在此处表明,例如,你要使用address,则 range.load('address')。
  • clear(),清空该区域
  • delete(),删除该区域,并指定是否需要下面的值上移,或者右面的值左移,参数枚举值如下:
    • Excel.DeleteShiftDirection.up:删除后,下面的值,向上移动填充空值
    • Excel.DeleteShiftDirection.left:删除后,右面的值,向左移动填充空值
  • select(),选中该区域
  • copyFrom(),将指定区域的值复制给当前区域

具体用法

准备工作:

  • 首先在vue中要安装excel-addin
npm install excel-addin --save
  • 在index.html中假如office.js
  <script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>

  • 如果想要在Excel初始化时做些什么,还需要在main.js中假如下面的代码
const Office = window.Office
Office.initialize = () => {
//初始化内容
}
  • 操作Excel的行为均要写在特定方法里,即:
//其中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)
},

参考链接

Excel JavaScrip API

项目地址

项目链接


Office加载项对Excel进行读写操作的更多相关文章

  1. Office加载项

    出自我的个人主页 Alvin Blog 前言 前一段时间公司做了有关Excel 加载项的开发,也遇到了很多坑,所以在此记录一下,有两个原因,1.留给以后在用到加载项的时候,复习所用,避免 跳进同一个坑 ...

  2. Office加载项安装

    出自我的个人主页 Alvin Blog 前言 Excel加载项离不开安装,Excel加载项本身安装及其简单,但这是在申请下来Office开发者账户之后,再次之前都得自行安装 线上安装 微软申请开发者账 ...

  3. office加载项部署清单签名的证书或其位置不受信任

    异常信息: System.Security.SecurityException: 此应用程序中的自定义功能将不起作用,原因是用于为 BIMT写作指导 的部署清单签名的证书或其位置不受信任.请向管理员寻 ...

  4. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  5. word加载项打包发布注意事项总结

    最近在做一个word加载项,发布的时候还是有很多坑的现在总结一下:发布工具为Advanced Installer 11.0 网盘地址:http://pan.baidu.com/s/1i4GK3g5 1 ...

  6. VSTO - 使用Excel加载项生成表和图表

    此示例显示如何创建Excel的加载项,使用户可以在其工作表中选择库存符号,然后生成一个新工作表,显示库存的历史性能. 工作表包含数据表和图表. 介绍Excel加载项通常不知道工作表包含什么.典型的加载 ...

  7. 下载安装与配置Excel 2013数据挖掘加载项(SQL Server 2012 SP1 + SQLServer2012_DMAddin.msi)

    一.系统要求 在安装这个数据挖掘加载项前,你的机器必须要可以支持如下的相关系统设备: (1)操作系统:windows 7 和  windows 8,暂时不支持 windows 10. (2)excel ...

  8. Excel催化剂开源第3波-修复ExcelCom加载项失效问题及WPS可调用Com加载项的方法

    为了还原一个干净无侵扰的网络世界,本文将不进行大规模地分发,若您觉得此文有用,不妨小范围地分享到真正有需要的人手中 功能概述 修复ExcelCom加载项常见问题,如每次需重新勾选COM加载项或COM加 ...

  9. 关于XLL加载项动态加载、卸载的演示及XLL函数自定义类型注册的演示

    1.在XLL中,把函数定义成不同的类型,在Excel中的实际效果也不同,具体如下: pxMacroType value                                          ...

随机推荐

  1. FPGA实战操作(1) -- SDRAM(操作说明)

    SDRAM是做嵌入式系统中,常用是的缓存数据的器件.基本概念如下(注意区分几个主要常见存储器之间的差异): SDRAM(Synchronous Dynamic Random Access Memory ...

  2. C语言使用指针表示数组的注意事项

    1)数组名是指针常量 如对指针变量可以进行++运算,但是对数组名却不允许,另外,对数组名的赋值运算也是错误的 2)注意指针变量的当前值 指针变量的值在程序运行过程中可能经常改变,要对此注意 3)数组越 ...

  3. Charles使用方法简介

    Charles是一个web代理器,用来记录和展示你所发出和接收到的所有数据. 主要特性: SSL Proxying——易清晰地文本展示SSL请求和响应Bandwidth Throttling是用来模拟 ...

  4. Ubuntu系统升级遇到问题记录

    The upgrade needs a total of 99.7 M free space on disk '/boot'. Please free at least an additional 5 ...

  5. caffe 图片数据的转换成lmdb和数据集均值(转)

    转自网站: http://blog.csdn.net/muyiyushan/article/details/70578077 1.准备数据 使用dog/cat数据集,在训练项目根目录下分别建立trai ...

  6. PHP、thinkPHP5.0开发网站文件管理功能(三)重命名文件

    public function renames(){ if(request()->isAjax()){ $file = iconv('UTF-8','GB2312',urldecode(inpu ...

  7. 第八章:BOM

    /* * bom: * 提供了浏览器接口; * w3c为了把javascript最基本的只是标准化已经将bom的主要方面纳入html5规范*/ console.log(window); !(funct ...

  8. 移动测试之appium+python 环境安装(一)

    准备工作 一.Python安装 下载地址 及环境变量配置 注意:安装时候记得勾选上Add python.exe to Path.这可以省略环境变量配置. 如果没有勾选,安装下边操作 找到path环境变 ...

  9. Unity 改变游戏对象的Scale引起的不好结果

    1. 当一个游戏对象的中心(它的x,y,z的交点)  不在它的正中间时,改变它的Scale时它的中心也会变的. 如图:这是用PlayMkaer做的,胶囊体碰到瓶子瓶子会碎,会在瓶子的中心位置那生成一个 ...

  10. cout和printf不能混用

    1.两者的缓存机制不同:printf无缓冲区,而std::cout有 (其实printf也是有缓冲区的,https://blog.csdn.net/ithzhang/article/details/6 ...