从SharePoint通过JavaScript代码下载后,无法打开Excel文件

xienkqul  于 2023-10-22  发布在  Java
关注(0)|答案(3)|浏览(177)

我正在下载Excel文件使用下面的代码在网上找到,但下载后,当尝试打开文件得到错误- Excel无法打开文件,因为文件格式无效...”
这个问题只是与文件下载使用下面的代码,如果我直接下载它的工作正常
我使用Office 365

Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
        szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Sub download_file()
    Dim downloadStatus As Long
    Dim url As String, destinationFile_local As String

    url = "http://sp2019/library/test.xlsx"
    
    destinationFile_local = "C:\test.xlsx"
    downloadStatus = URLDownloadToFile(0, url, destinationFile_local, 0, 0)

    If downloadStatus = 0 Then
        MsgBox "Download successfully"
    Else
        MsgBox "Download failed"
    End If
End Sub
gijlo24d

gijlo24d1#

我有一个解决办法,或者至少是一个变通办法,尽管我不能确切地解释为什么它会起作用。背景资料:我在包含链接的SharePoint列表的数据库中使用URLDownloadToFile。有问题的子目录使用SQL针对与我要下载的文件位于同一站点上的链接SharePoint列表创建一个记录表,如果记录表的记录计数大于0,则下载文件。这一切都很好。
在最近的一些跟踪问题的测试过程中,我创建了一个sub,它调用相同的URLDownloadToFile例程来下载相同的文件,但之前没有创建记录。每当我运行子程序时,最终在目标文件夹中的文件将是194 KB,并包含HTML。
通过反复试验,我发现只要我在运行文件下载代码之前使用链表创建了一个记录表,它就可以正常工作,即使我注解掉包含记录表创建的代码,只要我保持数据库打开,它也可以正常工作。实际上,在运行URLDownloadToFile之前,您需要执行一些操作来打开到SharePoint站点的连接。希望这对你有帮助。

ubof19bj

ubof19bj2#

你完全可以用URL路径打开文件:
https://SITE//PATH/File.extension
路径可能很棘手,我建议你在线打开Excel文件,然后点击Viewwing:“在桌面应用程序中打开”
然后点击Excel桌面应用程序>文件>信息复制文件路径这是一个非常可靠的SharePoint URL来源,你绝对可以使用它。

pb3s4cty

pb3s4cty3#

URLDownloadToFile函数对我不起作用。它下载了一些html代码inestead的Excel文件
仅对于Excel文件,我使用Excel.Application对象在后台打开文件,然后将其保存到本地文件夹中:

Public Sub DownloadExcelFileFromSharepoint(ByVal SharepointFileRoute As String, ByVal TargetDestinationFile As String)
    'No neccesary reference to Microsoft Excel Object Library, using late binding

    Dim oExcelApplication As Object 'Excel.Application
    Dim oExcelWorkbook As Object 'Excel.Workbook

    Set oExcelApplication = CreateObject("Excel.Application")
    Set oExcelWorkbook = oExcelApplication.Workbooks.Open(SharepointFileRoute, ReadOnly:=True)

    ' Don't display alerts on saving, so if TargetDestinationFile exists will be overwrited
    oExcelApplication.DisplayAlerts = False
    oExcelWorkbook.SaveAs TargetDestinationFile
    oExcelApplication.DisplayAlerts = True

    oExcelWorkbook.Close
    Set oExcelWorkbook = Nothing
    
    oExcelApplication.Quit
    Set oExcelApplication = Nothing
End Sub

获得正确的URL对我来说并不明显。只是复制Sharepoint的URL,而文件在浏览器中打开,并使用它与此功能不会工作。我不得不在Excel中使用打开文件对话框打开文件,写入shareponit文件夹并导航到文件子文件夹。我得到了这样的东西:

https://michelingroup.sharepoint.com/sites/TestSite/Shared documents/TestFile.xlsx

相关问题