3

我想获取用户的 excel 文件的列的名称和数量,但我不能将整个文件发送到服务器,而只能发送它的一些第一个字节(足以读取第一行)。我怎么能在 C# 中做到这一点?有没有办法不发送整个excel文件并读取第一行?据我所知,我们需要文件路径来读取 excel 文件,但我只想使用文件的一小部分,比如流:在下面的代码中,我使用“ExcelDataReader”来读取文件:

 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;
    }

... 谢谢

4

1 回答 1

2

我不知道读取部分压缩文件 (xlsx) 的任何方法,并且 COM 和 ODBC 作为访问 xls 文件的方法都需要拥有整个文件。如果您真的想给自己带来溃疡,您可能会追踪 xls 文件规范并弄清楚如何解析文件的初始字节,但是您尝试做的用例非常有限,所以我怀疑您会找到任何可以为你做的事情,甚至在路上给你很大的帮助......

于 2013-04-27T07:14:25.070 回答