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 中正确生成 的相关文章

  • AngularJS 1.X 中的异步调用是如何工作的? $Http 调用没有返回值

    我有以下名为的函数getvalue 它与控制器一起位于 AngularJS 模块内 我试图在单击事件上调用此函数 调用控制器中的另一个函数 我希望我很清楚 功能 function getvalue Data http var value u
  • 如何使用 KendoUI 网格设置 CURD 以与 Kendo-Angular 和 Angular OData 工厂一起使用?

    在之前的项目中 我没有使用 Angular 我设置了一个Kendo DataSource使用 OData 端点 如下所示 var userDS new kendo data DataSource type odata transport r
  • 是否有任何公式可用于将特定单元格复制指定次数?

    目前我正在处理一份数据 其中我有一个公司名称列表 例如 1 A 2 B 3 C 还有很多 需要的结果是 1 A 2 A 3 A 4 A 5 A 6 B 7 B 8 B 9 B 10 B 11 C 12 C 13 C 14 C 15 C 等等
  • 如何将函数处理程序从控制器传递到 AngularJs 中的指令隔离范围?

    我在控制器中有以下功能 angular module app controller BodyController function this click function message alert message 我想将此函数传递到指令的
  • Angular - 过滤器从数组中删除空白字符串

    我有一个数组对象 数组可以包含空格 我如何创建 Angular 过滤器来删除空格以确定数组的长度 scope myData 1 1 4 4 N 4 6 8 2 2 4 6 0 6 5 4 2 8 2 3 3 F D 3 5
  • Excel VBA:排序,然后复制和粘贴

    所有 我需要编写一个执行以下操作的宏 将数据输入到 E 列的最后一个空白单元格后 按 E 列对整个工作表进行降序排序 工作表排序后 2a 将单元格复制到紧邻首次输入数据的单元格左侧的相邻单元格 2b 将复制的数据粘贴到最初输入数据的同一行的
  • 身份验证在不应该返回“401(未经授权)”时返回

    我第一次设置身份验证功能 在用户登录后得到了一些意外的结果 一位同事给了我一个具有工作身份验证的应用程序 以模仿我的应用程序 看起来我所做的一切都是正确的 我在前端使用 AngularJS 在后端框架使用 SailsJS 并且护照JS ht
  • 使用 ui-router 的 angular.js,如何仅重新加载一个视图?

    我有一个相当简单的待办事项应用程序 使用 angular js 我正在使用 ui router 库 我查看了 github 上的 ui router 示例 https github com angular ui ui router tree
  • 未捕获的引用错误:在 karma start karma.conf.js 上未定义 require

    使用 Karma 和 Jasmine 对 Rails 应用程序的 Angular 前端进行单元测试 看来我已经做了所有已知的事情来解决这个错误 并且我的 package json 中留下了一百万个依赖项 这是我的 Karma conf js
  • Angular UI 路由器嵌套视图问题

    我在理解 Angular UI Router 嵌套视图的工作原理时遇到了一些问题 我的 stateProvider 看起来像这样 stateProvider state login url login views main template
  • Excel 中使用通配符 {*} 进行 Vlookup

    我有下表 现在 我想检查主题是否具有数据中存在的任何文本 col F I used VLOOKUP A2 F F 1 0 但它正在给予 N A Try 公式为B2 SUM COUNTIF A2 F 2 F 3 gt 0 Edit SUM C
  • 二维数组作为字典的项目

    我想用一个项目的几个属性填充字典 例子 我正在考虑拥有Item 1 and Item 2 as Dictionary键与array这将保留其属性 我需要能够单独访问项目的每个属性 因此将它们连接为一个字符串不是一种选择 我正在考虑类似下面的
  • AngularJS templateUrl 与 template - 隔离范围

    我有以下指令 offerListSorters directive offersSorter myState templateCache function myState templateCache return scope control
  • 导入到 SQL Server 时忽略 Excel 文件中的列

    我有多个具有相同格式的 Excel 文件 我需要将它们导入 SQL Server 我当前遇到的问题是 有两个文本列我需要完全忽略 因为它们是自由文本 并且某些行的字符长度超出了服务器允许我导入的长度 这会导致截断错误 因为我的分析不需要这些
  • VBA全局类变量

    我的障碍是试图让多个子程序识别类变量 当我尝试全局声明它们时 出现编译错误 无效的外部过程 然后 当我运行公共函数或子函数来声明变量时 它们在其他子函数中保持未定义状态 我希望多个子程序能够识别变量 因为它们的值应该通过用户窗体进行更改 然
  • 使用 ng-blur 和 ui-sref 无法按预期工作

    我有一个带有自定义下拉结果面板的搜索字段 在其中输入单词或聚焦时会显示该面板 所以我的 html 看起来像这样 div class input group div
  • 如何获取 pandas 数据框并覆盖 Excel 工作簿中的特定工作表

    我想获取一个数据框并让它替换特定工作表中的现有数据 假设为sheet1 然后我想获取另一个数据框并将其附加到另一张工作表上的数据 比如说同一工作簿中的sheet2 目前 我必须将数据写入新的 Excel 工作簿 我无法在线找到如何实际替换我
  • 通过外部控制进行 AngularJS 智能表过滤

    我试图找出合并 st table st safe src 的正确方法 并通过表本身之外的控件过滤数据 用户可以添加 编辑和删除数据 这就是我使用安全源的原因 任何例子或反馈都会很棒 查看此示例 其中包含从智能表中添加 编辑 删除行的选项 h
  • Javascript 制作音频 blob

    我正在测试 html 音频标签 我想制作音频 blob url 就像 youtube 或 vimeo 那样 并将其添加到 src 开始播放音频 我一直在测试new Blob and URL createObjectURL 但我不知道如何使用
  • 将 Angularjs 动态绑定到新创建的 html 元素

    我有一个带有多个选项卡的选项卡页面 一旦单击调用服务即可返回一些数据 其中一些数据返回 html 表单并且非常随机 我想收集输入的这些值并通过服务将数据发送回服务器 我遇到的问题是我无法从我动态创建的 html 中的输入元素获取数据 我创建

随机推荐

  • 在 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中正确打开 它正在工作 但我没有得到单元格 它显示黑白页面 但内容在那里 帮助如何解决