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) を読み取る方法がわかりません。また、xls ファイルにアクセスする方法として COM と ODBC の両方でファイル全体が必要です。本当に潰瘍を作りたい場合は、おそらくxlsファイルの仕様を追跡して、ファイルの最初のバイトを解析する方法を理解することができますが、あなたがしようとしていることは非常に限られたユースケースであるため、あなたのためにそれを行うか、途中であなたを前進させる何かを見つけてください...

于 2013-04-27T07:14:25.070 に答える