0

以下代码在第一次通过时执行良好,但在第二次通过

reader = ExcelReaderFactory.CreateOpenXmlReader(stream);

抛出 System.ArgumentNullException: '值不能为空'

    public IEnumerable<String[]> GetFileContents()
    {
        Stream stream = _originalFile.InputStream; // _originalFile is of type HttpPostedFileBase

        IExcelDataReader reader = null;

        if (_originalFile.FileName.EndsWith(".xls"))
        {
            reader = ExcelReaderFactory.CreateBinaryReader(stream);
        }
        else if (_originalFile.FileName.EndsWith(".xlsx"))
        {
            reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
        }
        else
        {
            throw new Exception("File format is not supported");
        }

        List<String[]> result = new List<String[]>();
        Int32 fieldCount = reader.FieldCount;
        StringBuilder builder = new StringBuilder();

        while (reader.Read())
        {
            for (int i = 0; i < reader.FieldCount - 1; i++)
            {
                builder.AppendFormat("{0},", reader.IsDBNull(i) ? string.Empty : reader.GetString(i));
            }

            builder.Length--;
            result.Add(builder.ToString().Split(','));
            builder.Clear();
        }
        reader.Close();
        reader.Dispose();

        return result;
    }
4

0 回答 0