使用c#downloadfile()下载后损坏的excel文件

vmdwslir  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(262)

我正在制作一个从网站下载文件的ssis包。为了获得正确的链接,我存储了一个“full result set”(对象变量),然后使用“for each loop container”遍历代码(作为字符串变量)。
示例url:https://website/data/date1.aspx. 如果打开此链接,它将自动下载excel文件date1.xlsx。
到目前为止,我已经制作了以下c代码:

public void Main()
    {

        string testfile = Dts.Variables["User::filename2"].Value.ToString();

        string[] arr = new string[] {testfile};

        try
        {
            string myURI = "https://website/data/";
            string myWebString = null, myLocalPath = null;
            WebClient myWebClient = new WebClient();
            foreach (string fileName in arr)
            {
                myWebString = myURI + fileName;
                myLocalPath = "c:\\sql\\" + fileName+".xlsx";
                myWebClient.DownloadFile(myWebString, myLocalPath);
            }
            Dts.TaskResult = (int)ScriptResults.Success;
        }
        catch (Exception ex)
        {
            Dts.Events.FireError(18, "The process failed", ex.ToString(), "", 0);
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
        Dts.TaskResult = (int)ScriptResults.Success;
    }

    #region ScriptResults declaration
    /// <summary>
    /// This enum provides a convenient shorthand within the scope of this class for setting the
    /// result of the script.
    /// 
    /// This code was generated automatically.
    /// </summary>
    enum ScriptResults
    {
        Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
        Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
    };
    #endregion

}

我使用的变量是“date1.aspx”,“date2.aspx”等等。。。这些文件现在自动下载并存储为“date1.aspx.xlsx”和“date2.aspx.xlsx”。
但是,当我打开excel文件时,我看到文件已损坏。但是当我用data>从文件excel导入它时,excel能够正确地打开文件。
我想我的代码有问题。我没有c语言背景,所以我真的做了几天的试错法。最后,我想处理ssis包中的文件,所以直接以csv文件格式存储它们会很好,因为excel中的“工作表名称”也会每次都更改,所以我很难进行“for each循环”,因为这样我就需要再次使用额外的代码。
如果有人能帮我就太好了!谢谢您!
excel文件在记事本中的外观如下:

‡    ,  —  ±  3  M  ¿  Ù  F
  `  Ó
  í  *  D  ¾  Ø  +  E     ©  Ã    A  [
  £  ½
    %  š  ´    *  }  —  â  ü  H  b
  î    l  †  
  $  ¡  »    9  ª  Ä  6  P  º  Ô  L  f  ä  þ  h  ‚  â  ü  T  n  è    s    â  ü  r  Œ  ü    ‰  £  +  E    ©    &  ”  ®     0  —   ±  F!  `  ê!    h"  ‚  þ"    w#  ‘  þ#    j$  „  ï$      ‚%  œ  &     ®&  ¤   M'  C  â'  Ø  ^(  T  )  ý  q)  g  ê)  à  f*  \  ý*  ó  +  w  ,  ø  b,  X  é,  ß  d-  Z  Ã-  ¹  H.  >  ß.  Õ  ^/  T     0  ý    Š0  €
  1  ü
  Œ1  ‚  2    º2  °  33  )
  ±3  §
  14  '  ¬4  ¢  &5    ˜5  Ž  6  
  –6  Œ  47  *  ¢7  ˜  8    †8  |  9  
  ¸9  ®  :    ®:  ¤  (;    Ž;  „   <  ö  ’<  ˆ  ù<  ï  n=  d  Ë=  Á  Q>  G  µ>  «  8?  .  ¸?  ®  %@     @  –  3A  )  µA  «  ,B  "  ¯B  ¥  C    oC  e  àC  Ö  _D  U  þD  ô  ’E  ˆ  F  ù  F  a   %G  ÷   ‚G  T  ïG  Á  MH    ÍH  Ÿ  RI  $  ÚI  ¬  eJ  7  K  ×  ‘K  c  %L  ÷  ÙL  «  VM  (  íM  ¿  |N  N  ÿN  Ñ  rO  D   P  ×    „P  V
  ëP  ½
  oQ  A  ïQ  Á  vR  H  S  á  ’S  d

T  Ü
  ¡T  s  U  ð  žU  p  V  ë  ‹V  ]  W  á  ŒW  ^  GX    ÒX  ¤  xY  J  Z  Ø  uZ  G  
[  Ü  }[  O  \  ä  –\  h  .]     £]  u  C^    Ô^  ¦  J_    ì_  ¾  }`  O  ì`  ¾  ya  K  b  Ó  b  S  úb  Ì  ƒc  U  óc  Å  vd  H  üd  Î  …e  W     f  Û  Øf  †   Ag  ï   Êg  x  ih    õh  £  wi  %  äi  ’  Zj    Ïj  }  Ak  ï  ¾k  l  l  É  Žl  <  m  ¼  ³m  a  !n  Ï  n  >  o  À  œo  J     ÿo  ­   Žp  <
  q  Å

也许这篇文章提供了解决方案,这有一个类似的问题。但是我不知道如何把它在代码中。。。用httpwebrequest和cookies下载的c文件被损坏

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题