2013-04-27 88 views
2

我想要得到的名稱和用戶的Excel文件的列數,但我不能發送整個文件到服務器,但只是一些它的第一個字節(足以讀取第一行)。我怎麼能在C#中做到這一點?有沒有辦法不發送整個Excel文件,並閱讀第一行?據我所知,我們需要讀取Excel文件的文件路徑,但我想只是使用文件的一小部分如流: 在下面的代碼我使用「ExcelDataReader」讀文件:讀取Excel文件,而無需整個文件服務器

public List<string> Getheader() 
    { 
     List<string> headers = new List<string>(); 
     byte[] hdrToRead = System.Text.Encoding.UTF8.GetBytes(remainedXlsStr); 
     MemoryStream stream = new MemoryStream(hdrToRead); 
     IExcelDataReader excelReader = null; 

     switch (currentFileType) 
     { 
      case (XlsType.xlsx): 
       { 
        excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); 
        break; 
       } 
      case (XlsType.xls): 
       { 
        excelReader = ExcelReaderFactory.CreateBinaryReader(stream); 
        break; 
       } 
      case (XlsType.notSupported): 
       { 
        break; 
       } 
     } 

     if (excelContent.HasHeader) 
      excelReader.IsFirstRowAsColumnNames = true; 

     if (excelReader.Read()) 
     { // first row 
      for (int i = 0; i < excelReader.FieldCount; i++) 
      { 
       // fieldType = excelReader.GetValue(i).GetType(); 
       headers.Add(excelReader.GetValue(i).ToString()); 
      } 
     } 
     return headers; 
    } 

... 謝謝

回答

1

我不知道有任何方法來讀取部分壓縮文件(xlsx),COM和ODBC作爲訪問xls文件的方式都需要具有整個文件。如果你真的想給自己潰瘍,你很可能追蹤到xls文件規範,並找出如何解析文件的初始字節,但你正在嘗試做有一個非常有限的情況下使用,所以我懷疑你會發現任何會爲你做它,甚至給你多少的路上前進了一腿......

+0

我真的很感謝您抽出寶貴的時間來回答我的問題:) – user2326105 2013-04-27 07:32:07

+0

可以*也*表明通過投票認爲升值它:) – 2013-04-27 21:52:50

相關問題