有没有办法将 Excel 中选择的范围导入到我的 Web 应用程序?

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

我正在尝试将 Excel 中的选定范围导入到我的 Web 应用程序(带有 JavaScript 的 JSF)。

我已经能够通过文件上传导入整个 Excel 文件,我还可以复制 Excel 文件的内容,将其粘贴到某种文本输入中并随后解析它,但我真的很希望在一个 excel 时具有这种行为使用另一个选定范围。

我知道这可能是不可能的,因为出于很好的原因,浏览器的运行时与客户端(运行 Excel)是分开的。尽管如此,我只是想检查是否有一个好主意,但我在网络搜索中没有找到。

Excel范围选择:

excel jsf office-js
1个回答
0
投票

您可以使用 insertWorkbookFromBase64 API 从另一个工作簿复制工作表。然后您可以通过API调用删除其他不相关的内容。

以下是示例代码供您参考。

async function run() {
  await Excel.run(async (context) => {
    //Excel.InsertWorksheetOptions
    var workbook = context.workbook;

    var options = {
      sheetNamesToInsert: ["sample"],
      positionType: Excel.WorksheetPositionType.end,
      relativeTo: "Sheet1"
    };
    const sheets = context.workbook.worksheets;
    sheets.addFromBase64(
      workbookContents,
      null, // get all the worksheets
      Excel.WorksheetPositionType.end // insert them after the current workbook's worksheets
    );
    await context.sync();
  });
}

async function getFileBase64() {
  const myFile = <HTMLInputElement>document.getElementById("file");
  const reader = new FileReader();

  reader.onload = (event) => {
    // strip off the metadata before the base64-encoded string
    const startIndex = reader.result.toString().indexOf("base64,");
    workbookContents = reader.result.toString().substr(startIndex + 7);
  };

  // read in the file as a data URL so we can parse the base64-encoded string
  reader.readAsDataURL(myFile.files[0]);
}

async function insertWorksheetsFromBase64(workbookContents) {
  Excel.run((context) => {
    //Excel.InsertWorksheetOptions
    var options = { sheetNamesToInsert: [], positionType: Excel.WorksheetPositionType.before, relativeTo: "Sheet2" };

    const sheets = context.workbook.insertWorksheetsFromBase64(workbookContents);
    return context.sync();
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.