Использование функции «addFromBase64» для добавления существующей книги - PullRequest
1 голос
/ 10 апреля 2020

Я создал надстройку Excel с использованием Office. js. В моей надстройке мне нужно открыть существующую книгу в моей текущей книге. Я посмотрел документы Office. js api и обнаружил, что могу выполнить свое требование, используя функцию «addFromBase64». Они также отметили, что эта функция в настоящее время только для предварительного просмотра Publi c, и мы должны использовать другой CDN для того же. Я написал свой код, учитывая этот момент, но при выполнении кода существующая рабочая таблица не добавляется в мою текущую рабочую книгу (ничего не происходит), и я не получаю никакой ошибки.

Я использую эту надстройку в моем Excel 2019 (64 бит) для Windows.

Это мой код, который я написал. Пожалуйста, дайте мне знать, что я делаю что-то не так, и, пожалуйста, направьте меня к тому же.

<!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>

1 Ответ

1 голос
/ 10 апреля 2020

Да, API addFromBase64 имеет бета-версию предварительного просмотра для Win32 и Ma c. В соответствии с нашими критериями выпуска этот API не может выпускаться, поскольку Excel в Интернете не поддерживает вставки листов из внешней книги. Сейчас мы исследуем варианты поддержки Excel в Интернете в API addFromBase64.

Мы хотели бы подтвердить некоторые вопросы

  • Вам нужна поддержка Excel Online?
  • Какой тип контента вы хотите поддерживать с помощью API addFromBase64? было бы здорово, если бы вы поделились с нами образцом рабочей книги, мы хотели бы выяснить, можем ли мы разблокировать ваш сценарий или нет.

Кстати, я попробовал ваш код, он отлично работает с моей стороны.

Это суть, которую я создал из вашего кода. Вы можете попробовать на своей стороне? пожалуйста, позвольте мне, если есть какие-либо проблемы или нет. https://gist.github.com/lumine2008/39513788f189169a9cf7c15220f94077

...