Excel 无法在 angularjs 中正确生成

2024-01-13

我在用angularjs并在filesaver.js的帮助下使用blob生成excel表我得到了正确的结果,但excel无法在Micrsoft Excel中正确打开,它正在工作,但我没有得到单元格,它显示黑白页面,但内容在那里。帮助如何解决

在这里我附上了我的小提琴:https://jsfiddle.net/x30v0bym/3/ https://jsfiddle.net/x30v0bym/3/


您可以使用以下指令,

app
  .directive('excelExport',
    function() {
      return {
        restrict: 'A',
        scope: {
          fileName: "@",
          data: "&exportData"
        },
        replace: true,
        template: '<button class="btn btn-primary btn-ef btn-ef-3 btn-ef-3c mb-10" ng-click="download()">Export to Excel <i class="fa fa-download"></i></button>',
        link: function(scope, element) {

          scope.download = function() {

            function datenum(v, date1904) {
              if (date1904) v += 1462;
              var epoch = Date.parse(v);
              return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);
            };

            function getSheet(data, opts) {
              var ws = {};
              var range = {
                s: {
                  c: 10000000,
                  r: 10000000
                },
                e: {
                  c: 0,
                  r: 0
                }
              };
              for (var R = 0; R != data.length; ++R) {
                for (var C = 0; C != data[R].length; ++C) {
                  if (range.s.r > R) range.s.r = R;
                  if (range.s.c > C) range.s.c = C;
                  if (range.e.r < R) range.e.r = R;
                  if (range.e.c < C) range.e.c = C;
                  var cell = {
                    v: data[R][C]
                  };
                  if (cell.v == null) continue;
                  var cell_ref = XLSX.utils.encode_cell({
                    c: C,
                    r: R
                  });

                  if (typeof cell.v === 'number') cell.t = 'n';
                  else if (typeof cell.v === 'boolean') cell.t = 'b';
                  else if (cell.v instanceof Date) {
                    cell.t = 'n';
                    cell.z = XLSX.SSF._table[14];
                    cell.v = datenum(cell.v);
                  } else cell.t = 's';

                  ws[cell_ref] = cell;
                }
              }
              if (range.s.c < 10000000) ws['!ref'] = XLSX.utils.encode_range(range);
              return ws;
            };

            function Workbook() {
              if (!(this instanceof Workbook)) return new Workbook();
              this.SheetNames = [];
              this.Sheets = {};
            }

            var wb = new Workbook(),
              ws = getSheet(scope.data());
            /* add worksheet to workbook */
            wb.SheetNames.push(scope.fileName);
            wb.Sheets[scope.fileName] = ws;
            var wbout = XLSX.write(wb, {
              bookType: 'xlsx',
              bookSST: true,
              type: 'binary'
            });

            function s2ab(s) {
              var buf = new ArrayBuffer(s.length);
              var view = new Uint8Array(buf);
              for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
              return buf;
            }

            saveAs(new Blob([s2ab(wbout)], {
              type: "application/octet-stream"
            }), scope.fileName + '.xlsx');

          };

        }
      };
    }
  );

DEMO https://jsfiddle.net/sajeetharan/cxygrakn/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Excel 无法在 angularjs 中正确生成 的相关文章

  • 使用 Jasmine 测试服务功能 POST 响应

    我不完全确定如何执行此操作 但我有一个端点 URL 它是用于登录身份验证的 POST 请求 添加请求负载时 您将获得成功的登录凭据或错误 但是 我似乎在获取响应时遇到问题 这是我的spec file describe Service Aut
  • 如何使用 ng-repeat 复选框和 Angularjs 过滤表格

    曾几何时 这是可行的 但不知何故它被破坏了 我希望能够使用 ng repeat 生成复选框 以根据存储的数据获取所需数量的复选框 并使用它们来过滤生成的表 此外 我不希望重复复选框的相同值 我用代码做了一个plnkr div class r
  • 为什么 angularjs bootstrap datepicker 选择前一天?

    我在用着AngularJS引导日期选择器指令 http angular ui github io bootstrap 当我从模型中设置日期时 它会选择所选日期之前的一天
  • 如何使用 ng-repeat 更改 AngularJS 中特定 的背景颜色

    如何为每一行设置不同的背景颜色 举个例子 第 1 行 蓝色 第2行 红色 第三行 绿色 main js scope names fName John lName David fName Richard lName Daniel fName
  • 将 Base64 图像数据上传到 Amazon S3

    好吧 在这个phonegap 应用程序中 我从设备相机中的一个巨大图像文件开始 然后我降低分辨率并允许用户使用 javascript canvas 和一些非常酷的代码 称为 darkroomJS 来裁剪它 最后 darkroomJS 使用
  • ngRepeat 中的函数执行过于频繁

    我有三个tabs里面有不同的htmlng include 这些选项卡使用以下方式显示ng repeat 只有一个 HTML 模板包含函数调用 但它执行了 3 次 每个模板执行一次 ng repeat迭代 这里出了什么问题以及如何解决它 va
  • 如何使用 Angularjs 检查模块中的指令或控制器是否可用

    在 angularjs 中 给定一个模块 如何检查给定一个模块是否存在指令 控制器 我有一个模块 我想知道是否已加载某些特定指令 下面是一些示例代码 var module angular module myModule check if c
  • 计算序列中的重复值

    如何使用Excel计算列中的重复数据 Example A B apple 1 apple 2 apple 3 ball 1 bat 1 dog 1 dog 2 gole 1 gole 2 gole 3 gole 4 我认为对于你的情况中的所
  • Excel 接受一些字符,而 OpenXml 有错误

    我有一个字符串 我想使用 C 中的 openxml 组件将其导出到 Excel 文件 我的文本有 u001f 字符 而 openxml 对此字符有错误 错误文本 十六进制值 0x1f 是无效字符 我将该测试直接复制到 Excel 中 没有问
  • Excel 2007 从 C# get_Value 始终返回 -2146826265

    我有一个引用 Microsoft Excel 12 0 对象库的小型 C 应用程序 除此之外 它还从 Excel 单元格读取值 它从一些较旧的 Excel xls 文件和一些 2007 文件 xlsx 中读取此值 所有 xls 文件的值都会
  • 指令中的 Angular + 茉莉花 + 模拟 $stateParams

    在指令中模拟 stateParams 的最佳方法是什么 stateParam成员会根据测试而改变 我可以使用 controller ctrl stateParams 轻松模拟控制器中的 stateParams 但不知道如何修改注入指令的 s
  • angularjs ng-repeat 在两个级别上但只有一个输出

    我有一个看起来像这样的大物体 scope marketplaces first example second example 我想做的是循环遍历大对象 如下所示 section ul li li ul section 在循环内部 再次循环每
  • 获得一次性绑定以适用于 ng-if

    这个问题已经被之前问过 https stackoverflow com questions 23969926 angular lazy one time binding for expressions 但我无法让该解决方案发挥作用 所以我想
  • Angular 2 中的变更检测

    我正在将角度 1 和角度 2 集成在一起 因此我有角度 1 控制器和服务以及角度 2 组件 这些对于数据检索和存储来说工作得很好 反之亦然 下面是我的 html 页面 h3 Angular 1 service h3 div div
  • 如果特定 stateParam 为空,如何重定向到 state

    我不确定我这样做的方式是否正确 任何建议将不胜感激 我有一个餐厅选择器 用户可以从中选择一家餐厅 然后所有其他子状态加载特定于所选餐厅的内容 但我需要默认选择一个子状态 包括一家餐厅 它将根据用户最近的位置或 cookie 数据 如果他们之
  • 将数据从 R 导出到 Excel

    我试图将从 R 获得的一些结果导出到 Excel 中 但未成功 我尝试过以下代码 write table ALBERTA1 D ALBERTA1 txt sep t write csv ALBERTA1 ALBERTA1 csv your
  • 测试 AngularJs 的 $http.defaults.headers.common 是否设置了特定标头

    所以我对 JavaScript 和 AngularJS 的世界还是个新手 因此我的代码还没有达到应有的水平 但它正在改进 尽管如此 我开始学习并实现一个带有 REST 后端的简单登录页面 提交登录表单后 将返回一个身份验证令牌并将其设置为默
  • 从 X、Y、Z 数据、Excel 或其他工具进行 3D 绘图

    我的数据看起来像这样 1000 13 75 2 1000 21 79 21 1000 29 80 02 5000 29 87 9 5000 37 88 54 5000 45 88 56 10000 29 90 11 10000 37 90
  • 有没有一种方法可以将这些列转换为数据格式?

    有没有办法将这些列转换为数据格式 gg mm aaaa 时 分 秒 日期 20220601 gt gt gt gt 2022 06 01 小时 3047 gt gt gt gt gt 00 30 47 时 分 秒 我对 B 列有严重问题 我
  • Angular.js,如何将值从一个组件传递到任何其他组件

    我从 Angular js 开始 所以如果我解释得不够 我会将其添加到问题中 请告诉我 I have A component js A template html B component js B template html A compo

随机推荐

  • 在 opencv 中索引矩阵的最佳方法

    可以说 A and B是相同大小的矩阵 在Matlab 我可以使用简单的索引 如下所示 idx A gt 0 B idx 0 我怎样才能做到这一点OpenCV 我应该只使用 for i 0 rows for j 0 cols if A at
  • R:如何在数据帧内进行偏移和匹配?

    我想使用类似于Excel的OFFSET和MATCH函数的东西 这里是一个示例数据集 数据 Which Test Test1 Test2 Test3 RESULT Test1 TRUE 80 0 Test2 FALSE 25 0 Test1
  • Java继承中的“this”关键字如何工作?

    在下面的代码片段中 结果确实令人困惑 public class TestInheritance public static void main String args new Son Father father new Son System
  • 事件的 Google Analytics 屏幕名称

    我对 Google Analytics 中的 屏幕名称 维度感到困惑 如果您转到 行为 gt 事件 gt 屏幕 您就会看到它 我想知道如何将屏幕名称附加到事件中 目前我正在跟踪屏幕浏览 点击 和事件 点击 我认为分析可以通过查看最后一个屏幕
  • 从 MySQL 中的表的一部分中选择最小值和最大值

    如果我想从整个表中选择最小值和最大值 我可以使用 SELECT min price as min price max price as max price FROM prices 但是如何从表的一部分中选择最小值和最大值呢 例如 我的表中有
  • 经典asp和ASP.NET之间的密码加密/解密

    我有 2 个网站 一个用经典 ASP 编写 另一个用 ASP NET 1 1 框架 编写 这两个应用程序都使用登录机制来验证基于共享数据库表的用户凭据 到目前为止 密码存储在单向 MD5 哈希中 这意味着如果人们丢失旧密码 则必须为其提供新
  • 用于计算百分位数的条件数组

    我有一些数据如下 val crit perc 0 415605498 1 perc1 0 475426007 1 perc1 0 418621318 1 perc1 0 51608229 1 perc1 0 452307882 1 perc
  • iOS VoiceOver 崩溃(消息发送到已释放的实例)

    在启用 VoiceOver 的情况下运行我的应用程序时 我遇到了奇怪的崩溃 该应用程序有一个侧边栏界面 如 Facebook 当点击其中之一时UITableViewCells 在侧边栏中UITableView 我换出视图控制器 根据点击的单
  • 如何设置 JMenuItem 的大小?

    正如你所看到的 拥有这些东西是很丑陋的JMenuItem是 菜单项的宽度非常小 这是代码 JMenu menuOne new JMenu MenuOne JMenu menuTwo new JMenu MenuTwo JMenu menuT
  • 如何使用 pytest 装置和 django 在unittest中创建类似于“setUp”的方法

    我的测试文件中有下面的代码并尝试重构它 我是 pytest 的新手 我正在尝试实现与 unittest 可用的类似方法 setUp 以便能够将数据库中创建的对象检索到其他函数 而不是重复代码 在这种情况下我想重用month from 测试设
  • @ManyToOne 和 @OneToOne 与 @EmbeddedId 的关系

    我正在尝试将数据库实体的 id 从单个 long 更改为由两个 long 组成的复合 id 这两个 long 封装在我的 ID class 中 如下所示 您会为 ManyToOne 和 OneToMany 关系使用什么注释 我的注释是否有错
  • Capistrano 3:在任务中使用服务器自定义变量

    我有多阶段多服务器设置 在我的任务中我需要使用服务器名称 例如在 stagin rb 我有 set stage staging Define servers server xxx xx xx xxx user deploy roles w
  • 使用Automapper时如何忽略特定类型的属性?

    假设我有两种类型 class Type1 public int Prop1 get set public string Prop2 get set public string Prop3 get set class Type2 public
  • SwiftUI:当 List 和 ForEach 嵌入 TabView 时,WatchOS 8.1 中的 NavigationView 错误

    下面的代码在 WatchOS 7 和 8 0 中运行良好 但现在在 8 1 中 点击该行将导航到目的地 但随后立即导航回根视图 我提交了反馈 FB9727188 并包含以下内容来演示该问题 struct ContentView View S
  • 如何访问 SwiftUI 中的子视图?

    我正在开发 SwiftUI 感觉它与 React 非常相似 刚才我正在自定义一个SwiftUI的Button 遇到一个问题 无法动态访问Button的子视图 以下代码是我要做的 struct FullButton View var acti
  • javascript 原型和闭包中的“this”访问

    我是js初学者 对下面的代码感到困惑 Foo function arg this arg arg Foo prototype init function var f function alert current arg this arg a
  • 添加一个点来扩展多边形而不将其附加到 Google 地图中?

    我正在通过标记在 Google 地图中构建一个多边形 可以拖动这些标记来重塑它的形状 因此 当有 3 个标记时 将绘制多边形 并在形状中附加更多标记 将其扩展 当用户只想遵循简单的顺时针 逆时针模式时 这很好 但是当他想要通过其边缘之一扩展
  • 显示播客列表中的剧集列表

    我正在尝试显示特定作者的播客频道列表 选择播客后 显示相关剧集 我能够独立完成每一项工作 但不知道如何将两者联系起来 现在我的作者播客列表是使用以下命令生成的iTunes 应用商店搜索 API http www apple com itun
  • 用于在输入点和数字后禁止输入点的正则表达式 JavaFX

    我需要输入用逗号分隔的连续整数和实数 如下所示 2 12 4 3 我禁止通过以下表达式连续输入两个逗号 两个点和除数字之外的所有其他字符 2 d 但有了它我可以输入 2 12 4 3 即输入点和数字后 可以再次输入点 且只能是数字或逗号 我
  • Excel 无法在 angularjs 中正确生成

    我在用angularjs并在filesaver js的帮助下使用blob生成excel表我得到了正确的结果 但excel无法在Micrsoft Excel中正确打开 它正在工作 但我没有得到单元格 它显示黑白页面 但内容在那里 帮助如何解决