天道酬勤,学无止境

Office 365 - Create *.docx | *.pptx | *.xlsx files

问题

我正在开发一个使用 OneDrive API 进行文件管理的 Web 项目。 我想创建 *.docx | *.pptx | *.xlsx 文件,但不幸的是,没有一个 OneDrive API 支持创建空/新文件。 我尝试的是从我的服务器上传一个空/新文件到 OneDrive。 虽然上传工作正常,但文件无法在 Office Online 或本地 Office 中打开。

从这个博客,我能够生成一个 Word 文件并上传它。

function createNewDoc(name) {
var htmlString = "<html><body></body></html>";
var byteNumbers = new Uint8Array(htmlString.length);

for (var i = 0; i < htmlString.length; i++) {
   byteNumbers[i] = htmlString.charCodeAt(i);
    }
    var blob = new Blob([byteNumbers], {type: "text/html"});
    socialAPI.uploadFile('windows', blob, 'name', 'folder.87ash7ashb7a2').then(function (resp) {
        console.log("response for uploading file", resp);
    })
}

该文件适用于 Word。 但是,该方法不适用于 Excel 和 Powerpoint。

所以最终,我无法使用 OneDrive API 做任何事情。 如果有任何东西可以创建上述文件,我开始查看 Office 365 API,但我找不到类似的东西。 (PS:我在看 REST API)

我注意到的另一件事是 Box 能够执行相同的操作并在窗口中打开它,但 URL 的格式为 https://app.box.com/services/box_for_office_online。 Box 是否与微软有一些特殊的合作来提供这样的服务?

回答1

“空”Office 文件并不是真正的 0 字节文件。 桌面 Office 应用程序(Excel 除外)能够获取 0 字节文件并使其成为 Office 文档(插入使文件成为 Office 文件的“模板”)。 在线 Office 应用目前不支持这样做。

由于目前没有 API 可以创建特定类型的新文件,因此您需要解决它。 为此,您需要为 Word、Excel 和 PowerPoint 存储和上传“模板”文件。 您提供的示例是为 Word 执行此操作的一种方法,您在其中创建了一个空的 HTML 页面并将其上传。

对于 Excel 和 PowerPoint,您需要通过创建一个空文件并在您的应用程序想要创建一个新的空文件时将其作为“新”文件上传来执行类似的操作。 但是,您需要一个新文件的实际二进制内容,而不是能够将简单的 HTML 字符串存储为模板文件内容,根据类型的不同,该文件最多可达 ~30kb。

我们正在努力改进 Web 应用程序,以便它们可以获取 0 字节文件并将其“转换”为新文档,但这仍然是一个错误。

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Office 365 - Create *.docx | *.pptx | *.xlsx files
    I'm working on a web project which uses the OneDrive API for file management purposes. I wanted to create *.docx | *.pptx | *.xlsx files but unfortunately, none of the OneDrive APIs support creating empty/new files. What I tried was to upload an empty/new file from my server to OneDrive. While the upload works fine, the file does not open in Office Online nor in local Office. From this blog, I was able to generate a Word file and upload it. function createNewDoc(name) { var htmlString = "<html><body></body></html>"; var byteNumbers = new Uint8Array(htmlString.length); for (var i = 0; i <
  • python获取文档的真实创建时间(word、excel、ppt、pdf、图片)
    审题 首先, 文档的新建时间和文件的新建时间是不一致的。 文档的新建时间和文件的新建时间是不一致的。 文档的新建时间和文件的新建时间是不一致的。 文档的新建时间是和文件没有关系的(对word来说就是新建word的时间),而文件的时间是系统创建这个文件的时间(可能描述不准确)。具体来说文件的新建时间应该是操作系统维护的,但是每个类型的文档,其编辑器都是维护了一个文档描述信息在文件中,其是不随着文件的复制、移动所变更的。而我们就是需要获取文档的新建时间、而不是文件的新建时间。 获取文件的时间 具体获取文件的时间方法是使用os.path.getctime(filepath).还可以获取其他的时间,方法类似。 获取老版本office文件的时间 在处理这个需求最大的问题就是如何描述问题,当时能想到的描述方式都只搜到了获取文件时间的方法,最后在google搜索类似 获取word描述信息才找到方法。 具体当然很简单,pip安装 oletools包后就可以通过 olemeta [filename]获取文件的描述信息,就可以简单的获取文件的新建时间。 获取新版office文件的时间 尽管上一方法可以获取office文件的描述信息,但是却不能处理新版office文件(docx、xlsx、pptx)。但是知道了搜索方法、很快就能找到新版本office文件的处理方法。具体依靠:python-docx
  • Parsing and generating Microsoft Office 2007 files (.docx, .xlsx, .pptx)
    I have a web project where I must import text and images from a user-supplied document, and one of the possible formats is Microsoft Office 2007. There's also a need to generate documents in this format. The server runs CentOS 5.2 and has PHP/Perl/Python installed. I can execute local binaries and shell scripts if I must. We use Apache 2.2 but will be switching over to Nginx once it goes live. What are my options? Anyone had experience with this?
  • 如何使用文档目录中的 UIWebview 在 iPhone 中打开和查看 .doc、.docx、.rtf、.ppt、.pptx、.xlsx、.xls 文件?(How to open & view view .doc, .docx, .rtf, .ppt, .pptx, .xlsx, .xls file in iphone using UIWebview in Document directory?)
    问题 我们可以使用 UIWebview 在 iphone 中打开和查看 .doc、.docx、.rtf、.ppt、.pptx、.xls、.xlsx 文件吗? 我正在使用 Document 目录来显示文件。 .doc 文件在这里工作正常......但其余文件的扩展名不起作用.. 如果有人已经实现了这一点,那么请帮助我...... 任何代码片段或任何网络链接帮助... 提前致谢... 回答1 试试这个: [self.m_webView loadRequest:[NSMutableURLRequest requestWithURL:[NSURL fileURLWithPath:_m_filePath]cachePolicy:NSURLCacheStorageAllowedInMemoryOnly timeoutInterval:3.0]]; 您可以更改 timeoutInterval 和 cachePolicy,有时您必须等待更多时间才能加载。 回答2 您可能想查看 iOS 的 QuickLook 框架:https://developer.apple.com/library/ios/documentation/FileManagement/Conceptual/DocumentInteraction_TopicsForIOS/Articles
  • 如何使用 PHP 读写编辑 pptx/docx/xlsx 文件?(how can I read write edit pptx/docx/xlsx files using PHP?)
    问题 是否有可用于使用 PHP 有效处理 pptx/docx/xlsx 文件的库扩展? 到目前为止,我对 PPTX 文件更感兴趣。 谢谢 回答1 据我所知,这些文件格式 docx、xlsx、pptx 只是 zip 文件。 它们属于 Office Open XML (OOXML) 标准。 在 PHP 中,我们有这个库来操作这种类型的 zip 文档:http://php.net/manual/en/book.zip.php 您可以在此处找到有关此 ooxml 标准的所有文档:http://www.ecma-international.org/publications/standards/Ecma-376.htm 测试这些ooxml文件结构的最好方法是将文件扩展名更改为.zip,然后将其解压缩以找出其中的内容。 如果您不想构建自己的库来处理 ooxml 文件,可以参考此处的相关问题了解更多信息:PHP OOXML 库? 正如我从上面提到的相关 stackoverflow 问题中读到的,您可以使用 phpdocx 或其他一些名为 PHPWord 的文件。 希望这可以澄清一些步骤来帮助你完成你的愿望 回答2 没有一个库可以处理所有三种格式,但是有一些单独的库可以读取和/或写入单独的格式。 PHPPowerpoint 可以写入但不能读取 pptx 文件 PHPWord 可以写入但不能读取
  • PHP xls、xlsx、ppt、pptx 标题(PHP xls, xlsx, ppt, pptx headers)
    问题 这是我的代码,我试图根据文档类型发送正确的标题。 我找出了 pdf、doc 和 docx 的标题,但我仍然需要知道 Excel 和 Powerpoint 文件的正确标题。 任何帮助表示赞赏。 $document = urldecode($_GET['document']); $extension = end(explode('.', $document)); $mimeType = ''; switch ($extension) { case 'pdf': $mimeType = 'pdf'; break; case 'doc': $mimeType = 'msword'; break; case 'docx': $mimeType = 'msword'; break; case 'xls': $mimeType = ''; break; case 'xlsx': $mimeType = ''; break; case 'ppt': $mimeType = ''; break; case 'pptx': $mimeType = ''; break; } header('Content-type: application/' . $mimeType); 回答1 .xls 应用程序/vnd.ms-excel .xlsx 应用程序/vnd.openxmlformats
  • 如何在c#中将office文件(docx、xlsx)转换为谷歌格式(How to convert office files (docx, xlsx) to google format in c#)
    问题 任何人分享以编程方式将docx,xl​​sx,pptx转换为google格式的方法。 我正在通过 Google Drive API 上传并使用 c# 共享给用户。 每次当有人编辑文件时创建一个重复的文档。 我想在上传时转换文件。 所以我可以将转换后的文件分享给所有人。 我正在使用 Google Drive v3 api。 下载代码: private static System.IO.MemoryStream DownloadFile(DriveService service, string fileID) { var request = service.Files.Get(fileID); var stream = new System.IO.MemoryStream(); // Add a handler which will be notified on progress changes. // It will notify on each chunk download and when the // download is completed or failed. request.MediaDownloader.ProgressChanged += (Google.Apis.Download.IDownloadProgress progress) => { switch
  • Python 小技之 Office 文件转 PDF
    文 | 潮汐 来源:Python 技术「ID: pythonall」 在平时的工作中,难免需要一些 小Tip 来解决工作中遇到的问题,今天的文章给大家安利一个方便快捷的小技巧,将 Office(doc/docx/ppt/pptx/xls/xlsx)文件批量或者单一文件转换为 PDF 文件。不过在做具体操作之前需要在 PC 安装好 Office,再利用 Python 的 win32com 包来实现 Office 文件的转换操作。 安装 win32com 在实战之前,需要安装 Python 的 win32com,详细安装步骤如下:使用 pip 命令安装 pip install pywin32 如果我们遇到安装错误,可以通过python -m pip install --upgrade pip更新云端的方式再进行安装即可: python -m pip install --upgrade pip 下载离线安装包安装 如果 pip 命令未安装成功的话还可以下载离线包安装,方法步骤如下:首先在官网选择对应的 Python 版本下载离线包:https://sourceforge.net/projects/pywin32/files/pywin32/Build%20221/ 下载好后傻瓜式安装好即可。 文件转换逻辑 详细代码如下: class PDFConverter: def __init__
  • How to convert office files (docx, xlsx) to google format in c#
    Anyone share the way to convert docx, xlsx, pptx to google format in programmatic. I am uploading through Google Drive API and sharing to users using c#. every time creating a duplicate document when someone edit the file. I want to convert the file while upload. So i can share the converted file to everyone. I am using Google Drive v3 api. Download Code: private static System.IO.MemoryStream DownloadFile(DriveService service, string fileID) { var request = service.Files.Get(fileID); var stream = new System.IO.MemoryStream(); // Add a handler which will be notified on progress changes. // It
  • 将 Office 文档转换为 PDF 所需的输入(Input Desired on Converting Office Documents to PDF)
    问题 我正在尝试将 [从命令行或 c# 中的类库] 文档、excel 文件等转换为 pdf。 不使用 Interop 或在机器上安装任何办公产品。 有没有人做过这样的事情? 或者有什么想法? 我们遇到的所有解决方案似乎都需要互操作 谢谢 回答1 如果有帮助,请参阅这篇文章:Convert and Merge Office Files to One PDF File in C# using System.Drawing; using System.Windows.Forms; using Spire.Pdf; using Spire.Doc; using Spire.Xls; using Spire.Presentation; using System.IO; using Spire.Pdf.Graphics; namespace ConvertAndMerge { public partial class Form1 : Form { public Form1() { InitializeComponent(); PdfFiles = new List(); } public List PdfFiles { get; set;} //Add files to listbox private void btnAdd_Click(object sender, EventArgs e)
  • 除了将 Apache POI Java 用于 Microsoft Office 之外,还有其他选择吗?(Are there any alternatives to using Apache POI Java for Microsoft Office?)
    问题 我发现 Apache POI 可以在 Java 中以编程方式使用 MS Office 做很多事情,但它的文档让我想要,以及其他一些东西。 是否存在更好的替代方案? 我心想,OpenOffice.org 可能有一些东西,但找不到任何简洁的站点,它有一个库,允许您通过 Java 打开和存储 Word、Powerpoint、Excel 或其他 MS Office 应用程序。 是否存在更好的替代方案? 回答1 我认为 POI 是其他图书馆中最好的。 我不知道你为什么不喜欢它 Excel .xls & .xlsx HSSF 是 POI 项目的 Excel '97(-2007) 文件格式的纯 Java 实现。 XSSF 是 POI 项目的 Excel 2007 OOXML (.xlsx) 文件格式的纯 Java 实现。 Word .doc 和 .docx HWPF 是我们将 Microsoft Word 97(-2007) 文件格式移植到纯 Java 的名称。 它还为较旧的 Word 6 和 Word 95 文件格式提供有限的只读支持。 新 Word 2007 .docx 格式的 HWPF 的合作伙伴是 XWPF。 虽然 HWPF 和 XWPF 提供了类似的功能,但目前两者之间没有通用的接口。 无论如何这里有一些库:尝试 Aspose 和 java2word 回答2 在 Aspose
  • docx, xlsx, pptx, csv 的MIME 类型是什么?
    在下面的表格中查找所需要的的MIME type. 将来的详情请看: Register the 2007 Office system file format MIME types on servers. File extensionMIME type.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document.docmapplication/vnd.ms-word.document.macroEnabled.12.dotxapplication/vnd.openxmlformats-officedocument.wordprocessingml.template.dotmapplication/vnd.ms-word.template.macroEnabled.12.xlsxapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet.xlsmapplication/vnd.ms-excel.sheet.macroEnabled.12.xltxapplication/vnd.openxmlformats-officedocument.spreadsheetml.template.xltmapplication/vnd.ms
  • 无法使用 OpenIn 功能通过应用程序中的 webbrowser 打开 docx 文件(Cannot open docx file through webbrowser in app using OpenIn functionality)
    问题 我正在使用“OpenIn”功能并将文件从 Web 浏览器打开到我的应用程序中。 所有文件类型都已注册,并且可以正常工作。 当尝试从网络浏览器打开 docx、pptx 或其他文件时,“打开方式”框没有显示我的应用程序名称。 虽然我可以使用 UIDocumentInteractionController 在我的应用程序中查看 docx 或 pptx 文件。 我不知道问题出在哪里,因为它工作得很好。 欢迎任何建议。 提前感谢您的帮助 回答1 文档 UTI:com.microsoft.word.doc docx UTI:org.openxmlformats.wordprocessingml.document ppt UTI:com.microsoft.powerpoint.ppt pptx UTI:org.openxmlformats.presentationml.presentation xls UTI:com.microsoft.excel.xls xlsx UTI:org.openxmlformats.spreadsheetml.sheet 样本: <dict> <key>CFBundleTypeName</key> <string>Microsoft Word 2003 XML document</string> <key>CFBundleTypeRole</key>
  • office2016安装后右键新建没有word、excel、ppt等--解决方法总结
    首先说明: 1. office可以向下兼容安装,比如你若已安装2013版,则可以安装2016版或2019版,在安装时选择自定义不删除旧版本,不过一般装新版本都会自定义选择删除旧版本;但若你要安装2010版,就不行。 2. office安装程序setup.exe和破解程序都必须要“以管理员身份运行” 3. 卸载office时,在控制面板中卸载程序,只是普通卸载,还会保留个人配置,下次再安装时若之前已激活则装完即是激活的产品;要想彻底的下载,可以用微软官方卸载工具O15CTRRemove.diagcab。 以下两种方法亲测在office2016上有用: 一、打开控制面板——程序——程序与功能(或卸载程序),在里面选中Office2016,然后右键点击更改,选中“快速修复”点击确定,随后按照指引点“下一步”就好了。(千万别“在线修复”,这会花费你大量的时间) 二、还有一种简单粗暴的方法:卸载软件,然后在打开注册表,把注册表里面关于.doc、.docx、.xls、.xlsx等office一系列都给删除,不需要犹豫,然后重装。 以下关于注册表的四种方法在旧版本office上面估计会实用,但在2016的这个版本上可能没用(我的电脑上没用) 方法三和四是对于office所有类型文件一起操作: 三、 1.在桌面新建一个文本文档,打开; 2.将下面代码复制到空白文本文档内并保存关闭: Windows
  • 如何将 docx、xlsx 和 txt 文件上传到 Marklogic Server?(How to upload docx, xlsx & txt files to Marklogic Server?)
    问题 我有一个文件夹,其中包含 doc、docx、xlsx、pdf 和 txt 文件。 我正在使用此 XQuery 将所有这些文件上传到 Marklogic 中:- for $d in xdmp:filesystem-directory("C:\uploads")//dir:entry return xdmp:document-load($d//dir:pathname, <options xmlns="xdmp:document-load"> <uri>{concat("/documents/", string($d//dir:filename))}</uri> <permissions>{xdmp:default-permissions()}</permissions> <collections>{xdmp:default-collections()}</collections> <format>binary</format> </options>) 我还为我的数据库安装了内容处理。 现在,当我上传 doc 和 pdf 文件时,它们会转换为 xml 和 xhtml 文件。 但是 docx、xlsx 和 txt 不会被转换。 有人能告诉我为什么这些文件没有得到转换吗? 回答1 启用 Office OpenXML Extract 管道以转换 .docx、.xlsx 和 .pptx
  • tomcat resin nginx处理MIME类型
    如果被下载的文件是Office2007的dotx,docx,pot等后缀的时候,下载对话框中的图标会变成ZIP的,相应的文件名也会成为zip为扩展后缀的文件。 其实出现这样的情况,是由于IE中对下载文件类型的判断,假如找不到相应后缀的MIME的话,会自动根据数据流来判断文件的类型,而微软对Office2007的格式做了和以前完全不同的处理 一、tomcat处理方式(在web.xml中加入以下代码): Copy <mime-mapping> <extension>rar</extension> <mime-type>application/rar</mime-type> </mime-mapping> <mime-mapping> <extension>docx</extension> <mime-type>application/msword</mime-type> </mime-mapping> <mime-mapping> <extension>xlsx</extension> <mime-type>application/vnd.ms-excel</mime-type> </mime-mapping> <mime-mapping> <extension>pptx</extension> <mime-type>application/vnd.ms-powerpoint<
  • Python : 一文学会办公自动化(Word、Excel、PPT)
    自动化: 1946年提出,被运用于军事等方面。 办公自动化指的是现在办公和计算机技术结合起来的新型的办公的方式。 “高效的工作”正是自动化解决的问题/ 办公自动化的分类: 操作Excel: 就业数据分析等操作Word: 考试系统生成Word试卷等操作PPT : 用户画像分析等 使用的模块: xlrd模块xlwt模块smtplib模块pywin32模块python-ppt模块python-docx模块pymysql模块xlsxwriter模块 1. xlrd模块 xlrd是第三方模块,读取Excel表格数据xlrd常用函数xlrd操作Excel列xlrd操作Excel行xlrd操作Excel单元格安装: pip install xlrd -i http://pypi.douban.com/simple --trusted-host pypi.douban.com 查看当前电脑已经安装的模块: pip list Excel基础: 示例1. xlrd读取excel数据: import xlrd # 1.读取Excel # 1.1 读取文件 data = xlrd.open_workbook('17软件工程学业成绩排名.xls') # 1.2 工作表是否加载 # print(data.sheet_loaded(0)) # 索引为0的工作表 # 1.3 卸载已经加载的工作表 # data
  • 卸载wps后桌面上的office文件图标变成了白色
    文章目录 卸载wps后桌面上的office文件图标变成了白色第一步:第二步 卸载wps后桌面上的office文件图标变成了白色 作者:wyf 第一步: **win(图标)+R,输入regedit,点击确定** 第二步 2、找到HKEY_CLASSES_ROOT下的.doc、.docx、.ppt、.pptx、.xls、.xlsx,删除。 3、找到HKEY_CLASSES_ROOT下的 Word.Document.8、Word.Document.12、PowerPoint.Show.8、PowerPoint.Show.12、Excel.Sheet.8、Excel.Sheet.12,删除。 4、找到HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\下的.doc、.docx、.ppt、.pptx、.xls、.xlsx,删除。 5、找到控制面板打开,点击卸载程序,找到Microsoft Office,右键选择更改,进入以下画面,选择修复即可 6、亲测100%有效,原理:把注册表删除,修复更新注册表 来源:https://blog.csdn.net/fengLying/article/details/106975942
  • 如何使用 Struts2 上传 Microsoft Word .docx 和 .xlsx 文件(How to upload Microsoft word .docx and .xlsx files using Struts2)
    问题 我们在我们的应用程序中使用 Struts2,我使用 struts2 上传功能进行文件上传。 现在我的要求是,我们需要让用户上传到“.docx”和“.xlsx”。 我列出了“应用程序/ msword”和“应用程序/ vnd.ms-EXCEL”作为allowedTypes在strut.xml。 通过这一点,我们就可以上传只名为“.doc”和“.xls的”文件,但不能“的.docx”和“的.xlsx”文件。 有什么解决方法吗? 回答1 来自 http://sanjaal.com/java/tag/microsoft-office-2010-mime-types/ 以下是用于 MS Office 2010 文档文件格式的 MIME 类型。 .docm: application/vnd.ms-word.document.macroEnabled.12 .docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document .dotm: application/vnd.ms-word.template.macroEnabled.12 .dotx: application/vnd.openxmlformats-officedocument.wordprocessingml.template .potm
  • 如何使用 Docx4j 读取和编辑现有的 pptx?(how to read and edit existing pptx using Docx4j?)
    问题 我正在使用以下代码迭代现有的 pptx,但如何在特定幻灯片中编辑(替换文本或图像)。 文档中的示例 String inputfilepath = "C:/tmp/template.pptx"; PresentationMLPackage presentationMLPackage = (PresentationMLPackage)OpcPackage.load(new java.io.File(inputfilepath)); for (int i=0 ; i<presentationMLPackage.getMainPresentationPart().getSlideCount(); i++) { SlidePart slidePart = presentationMLPackage.getMainPresentationPart().getSlide(i); SlideLayoutPart slideLayoutPart = slidePart.getSlideLayoutPart(); //System.out.println(slp.getSourceRelationships().get(0).getTarget()); System.out.println(slidePart.getPartName().getName()); String layoutName