使用“ addFromBase64”功能添加现有工作簿

问题描述 投票:1回答:1

我已经使用office.js创建了excel加载项。在我的外接程序中,我需要在当前工作簿中打开一个现有工作簿。我查看了Office.js api的文档,发现可以使用“ addFromBase64”功能满足我的要求。他们还指出,此功能目前仅用于公共预览,我们必须使用其他CDN。考虑到这一点,我已经编写了代码,但是运行代码时,现有工作表未添加到当前工作簿中(什么都没有发生),并且没有出现任何错误。

我正在Windows的Excel 2019(64位)上使用此加载项。

这是我编写的代码。请让我知道我做错了什么,请引导我解决相同的问题。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <title>Excel Add-In with Commands Sample</title>

    <script src="Scripts/jquery-1.9.1.js" type="text/javascript"></script>
    <script src="Scripts/FabricUI/MessageBanner.js" type="text/javascript"></script>
    <!--<script src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js" type="text/javascript"></script>-->
   <!--To use addFromBase64 function for opening existing workbook in current instance-->
    <script src="https://appsforoffice.microsoft.com/lib/beta/hosted/office.js" type="text/javascript"></script>

    <!-- To enable offline debugging using a local reference to Office.js, use:                        -->
    <!-- <script src="Scripts/Office/MicrosoftAjax.js" type="text/javascript"></script>  -->
    <!-- <script src="Scripts/Office/1/office.js" type="text/javascript"></script>  -->

    <link href="Home.css" rel="stylesheet" type="text/css" />
    <script src="Home.js" type="text/javascript"></script>

    <!-- For the Office UI Fabric, go to https://aka.ms/office-ui-fabric to learn more. -->
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.min.css">
    <link rel="stylesheet" href="https://appsforoffice.microsoft.com/fabric/2.1.0/fabric.components.min.css">

    <!-- To enable the offline use of Office UI Fabric, use: -->
    <!-- link rel="stylesheet" href="Content/fabric.min.css" -->
    <!-- link rel="stylesheet" href="Content/fabric.components.min.css" -->

    <script>

        function insertWorkbook() {

            try {

                var myFile = document.getElementById("file");
                var reader = new FileReader();

                reader.onload = (function (theFile) {
                    return function (e) {

                        Excel.run(function (context) {


                            var startIndex = e.target.result.indexOf("base64,");
                            var mybase64 = e.target.result.substr(startIndex + 7, e.target.result.length);

                            var sheets = context.workbook.worksheets;

                            sheets.addFromBase64(
                                mybase64,
                                null, // get all the worksheets
                                Excel.WorksheetPositionType.after, // insert them after the worksheet specified by the next parameter
                                sheets.getActiveWorksheet()// insert them after the active worksheet
                            );

                            return context.sync();
                        });
                    };
                })(myFile.files[0]);

                reader.readAsDataURL(myFile.files[0]);

            }
            catch (err) {
                var e = err;
            }


            //     app.showNotification(document.getElementById(" bro").file);
        }
    </script>
</head>
<body>
<div id="content-main">
   Select existing workbook
</div>
<div>
   <input type="file" id="file" onchange="insertWorkbook()" />
</div>
</body>
</html>
excel office-js office-addins
1个回答
1
投票

是,addFromBase64 API具有针对Win32和Mac的beta预览版。根据我们的发布条件,该API无法发布,因为在线Excel不支持来自外部工作簿的插入工作表。现在,我们正在研究addFromBase64 API中的在线支持Excel的选项。

我们想与您确认一些问题

  • 您需要支持Excel Online吗?
  • 您想通过addFromBase64 API支持哪种内容类型?如果您可以与我们分享一个示例工作簿,那就太好了,我们想调查一下我们是否可以解除您的方案限制。

顺便说一句,我已经尝试过您的代码,但最终效果很好。

这是我根据您的代码创建的要点。你可以试试看吗?如果有任何问题,请让我。https://gist.github.com/lumine2008/39513788f189169a9cf7c15220f94077

© www.soinside.com 2019 - 2024. All rights reserved.