2

我正在使用此代码将数据从 2d 对象数组复制到内存流中。内存流显示已从二维数组读取的数据计数。但最后我得到一个空字符串。我不明白为什么。但是,使用soapformatter,字符串不是空的,而是包含在soap格式中,因此没有用。这是 BinaryFormatter 的代码。

        Worksheet sheet = (Worksheet)workBookIn.Sheets[1];
        Range excelRange = sheet.UsedRange;
        object[,] valueArray = (object[,])excelRange.get_Value(
            XlRangeValueDataType.xlRangeValueDefault);
        using (var ms = new MemoryStream())
        {
            BinaryFormatter formatter = new BinaryFormatter();
            //valueArray = 2d object array
            formatter.Serialize(ms, valueArray);
            ms.Position = 0;
            return Encoding.UTF8.GetString(ms.ToArray());
        }
4

1 回答 1

0

我认为您必须使用 XmlSerializer 如下:

    Worksheet sheet = (Worksheet)workBookIn.Sheets[1];
    Range excelRange = sheet.UsedRange;
    object[,] valueArray = (object[,])excelRange.get_Value(
        XlRangeValueDataType.xlRangeValueDefault);

    XmlSerializer xs = new XmlSerializer(valueArray.GetType());

    using(StringWriter sw = new StringWriter())
    using(XmlWriter writer = XmlWriter.Create(sw))
    {
         xs.Serialize(writer, valueArray);
         var xml = sw.ToString(); // Your XML
    }
于 2016-05-10T10:07:52.747 回答