本帖最后由 KYddd 于 2022-11-28 15:50 编辑
- // 插入图片完整实现
- var config = GC.Spread.Sheets.Designer.DefaultConfig;
- config.commandMap = {
- // 重写插入图片
- insertPicture:{
- execute: function (context, options, isUndo) {
- console.log("自定义插入")
- var inputObj=document.createElement('input')
- inputObj.setAttribute('id','localInput');
- inputObj.setAttribute('type','file');
- inputObj.setAttribute("style",'visibility:hidden');
- inputObj.setAttribute("accept",'image/bmp,image/gif,image/jpeg,image/jpg,image/png');
- document.body.appendChild(inputObj);
- inputObj.click();
- inputObj.onchange=function(e){
- console.log('选择文件:',e.target.files[0])
- // 选择的file转为base64
- getReader(e.target.files[0])
- }
- }
- }
- }
- // 选择的file转为base64
- function getReader(file) {
- var reader = new FileReader();
- reader.readAsDataURL(file); //异步读取文件内容,结果用data:url的字符串形式表示
- /*当读取操作成功完成时调用*/
- reader.onload = function (e) {
- // 表格中插入图片
- var sheet = spread.getActiveSheet();
- startRow = sheet.getActiveRowIndex();
- startCol = sheet.getActiveColumnIndex();
- rowHeight = sheet.getRowHeight();
- colWidth = sheet.getColumnWidth();
- console.log('reader.result', this.result);
- // 校验图片格式
- let canDo=validateImg(this.result)
- if(canDo){
- timestamp = Date.parse(new Date());
- picture = sheet.pictures.add(timestamp.toString(), this.result, startCol * colWidth, startRow *
- rowHeight);
- }else{
- alert('不支持此格式')
- }
- }
- }
- // 校验插入的图片格式
- function validateImg(base64){
- // 不支持的图片格式
- let noType=['tif','tiff','emf','wmf','tmp']
- let imgSrc=base64
- if(imgSrc.indexOf('data:image/')!==-1){
- let imgType=imgSrc.split(';')[0].split('/')[1]
- console.log('imgType',imgType)
- return noType.indexOf(imgType)==-1?true:false // 1 图片可渲染 2 不可渲染
- }
- }
复制代码
|