关于c#:如何以正确的格式获取数据从FTP服务器读取Excel文件时

How to get the Data in right format When reading an Excel file from FTP Server

我试图从ftp服务器读取一个excel文件,并将数据存储在一个列表中。Excel文件正在从FTP服务器读取,但数据正在传入

这是我的密码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 static void Main(string[] args)
    {
        //Listing all files from a folder

        string filename = getFileList("ftp://ftp.demosite.com/demoFolder/","username","password");


        //Here we know the file name
        FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create("ftp://ftp.demosite.com/demoFolder/"+filename);
        reqFTP.UsePassive = false;
        reqFTP.UseBinary = true;
        reqFTP.Credentials = new NetworkCredential("username","password");
        reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
        reqFTP.Proxy = GlobalProxySelection.GetEmptyWebProxy();

        FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
        Stream responseStream = response.GetResponseStream();

        // for excelread
        StreamReader reader = new StreamReader(responseStream);
        string[] allLines = reader.ReadToEnd().Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
        // for textfile read
        //TextReader tmpReader = new System.IO.StreamReader(responseStream);
        //string fileContents = tmpReader.ReadToEnd();
        Console.WriteLine("Now writing from file....");
        foreach (var item in allLines)
        {
            Console.WriteLine(item);                
        }
        Console.WriteLine("all file content is printed....");
        Console.ReadKey();

    }

数据的格式如下:当前O/P格式

请帮助!谢谢您。

  • 文件是否为.xls文件?因为这是一种二进制格式。即使是.xlsx,仅仅分成几行也不行。
  • 是的,这是一个.xls文件。
  • @斯图亚特告诉我如何得到正确格式的数据
  • 你需要使用Excel或NPOI或类似的工具来阅读它——你所看到的基本上就是当你在记事本中打开一个XLS文件时所得到的。
  • 没错,我需要从Nuget软件包管理器安装Excel或NPOI吗?并传递流阅读器对象?
  • 也许可以尝试阅读文档?我不认为Excel在Nuget上。
  • 好的,@stuartd谢谢,伙计:)
  • 这样使用binaryReader:const int buffer_size=40;binaryReader reader=new binaryReader(responseStream);string data=string.join(",reader.readBytes(buffer_size).select(x=>x.toString("2x"));
  • 好的@jdweng你能告诉我用什么来代替"2X"吗?
  • 抱歉打字错误。应该是"X2"


正如斯图尔特指出的。您正在将Excel文件作为文本文件读取。如果要读取Excel文件,需要将office.interop.excel引用添加到项目中,然后添加到类中。如果您的计算机上有Excel,您可以毫无问题地执行此操作。如果没有Excel,则必须找到第三方库。我最近发布了一个答案,解释如果Excel在你的机器上,如何做到这一点。

在C中链接Excel#

一旦有了引用,您就可以正确地访问Excel文件。

  • 那么在我的程序中到底在哪里使用这些代码呢??
  • 假设您使用的是一个IDE。首先需要将引用添加到项目中。右键单击项目并在COM部分下添加引用,然后查找Microsoft Excel对象库。这会将office.core和interop.excel引用添加到项目中。要在类中使用这些库,请添加"using"语句以访问库。然后,类可以打开/创建Excel文件,并执行类似myworksheet.cells[arow,acol]="pf"的操作。这些信息可以在上面的链接中找到。希望这有帮助。
  • 如果您的计算机上没有excel stackoverflow.com/questions/2654932/…提供了一些选项。
  • 当然…谢谢!这帮了很大的忙:)