Вот пример кода ... но я получаю исключение serializationException.Как сериализовать объекты com или excel в двоичном формате, чтобы я мог хранить его в memystream в asp.net.
xlbook - это объект, и я хочу сохранить этот объект в memystream.
unsafe public void Save(IStream stream, bool clearDirty, Excel.Workbook xlbook)
{
try
{
//if (stream == null)
//{
// return;
//}
//object data = xlbook;
if (xlbook == null)
{
return;
}
// convert data to byteArray
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter binaryFormatter = new BinaryFormatter();
//AppDomain currentDomain = AppDomain.CurrentDomain;
//currentDomain.AssemblyResolve += new ResolveEventHandler(currentDomain_AssemblyResolve);
//here im getting exception.
binaryFormatter.Serialize(memoryStream, xlbook);
byte[] bytes = memoryStream.ToArray();
memoryStream.Close();
//get memory pointer
int cb;
int* pcb = &cb;
//save data
byte[] arrayLen = BitConverter.GetBytes(bytes.Length);
stream.Write(arrayLen, arrayLen.Length, new IntPtr(pcb));
stream.Write(bytes, bytes.Length, new IntPtr(pcb));
//currentDomain.AssemblyResolve -= new ResolveEventHandler(currentDomain_AssemblyResolve);
}
catch
{
}
}
исключение я получаю ...
Тип 'Microsoft.Office.Interop.Excel.WorkbookClass' в Microsoft.Office.Interop.Excel Ассамблеи», Version = 11.0.0.0, Culture = нейтральный, PublicKeyToken = 71e9bce111e9429c 'не помечен как сериализуемый.
Возможный дубликат [Microsoft.Office.Interop.Excel.WorkbookClass в сборке «Microsoft.Office.Interop.Excel не помечен как сериализуемый] (http://stackoverflow.com/questions/8998836/microsoft-office -interop-excel-workbookclass-in-assembly-microsoft-office-inte) – phoog
Если вы хотите добавить информацию к вопросу, вы должны отредактировать исходный вопрос, а не задавать новый вопрос. – phoog
@ani, глядя на другие вопросы, которые вы задали в stackoverflow, есть несколько моментов, которые должны быть вам понятны, 1) Не используйте office COM в asp.net. 2) если вы упорствуете, вы не можете избежать использования временного файла. 3) подумайте об этом с помощью xml + xslt, чтобы предоставить xlsx-файлы, которые вы можете сделать с помощью временного файла. 4) нет, вы действительно не можете serlialize COM-объекты, и даже если вы это сделаете, это никогда не будет действительным файлом .xls (x). –