2016-05-10 65 views
2

我正在使用此代碼將數據從2d對象數組複製到內存流中。內存流顯示從2d數組讀取的數據的計數。但最後我得到一個空字符串。我不明白爲什麼。但是,使用soapformatter時,該字符串不是空的,但它被包含在soap格式中,因此沒有用處。 以下是BinaryFormatter的代碼。2d陣列的內存流

 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()); 
     } 
+0

不能連載一個數組,然後期望它返回一個字符串。格式化程序存儲的不僅僅是數組的實際內容。我懷疑你真正想要的只是將數組的值放入一個字符串中,所以你不應該使用二進制格式化程序。 – MicroVirus

+0

謝謝你。我應該使用什麼?如何將2d對象數組中的值轉換爲字符串?請幫忙。 – automationFormation

+0

這取決於,我們需要知道'valueArray'的定義,那麼你可以將它編輯成你的問題嗎? – MicroVirus

回答

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 
    }