C# 无法将类型为“System.Byte[]”的对象强制转换为类型“System.Data.DataTable
byte[]strbyte=newWebClient().DownloadData(str);//File.WriteAllBytes("D:\\我的文档\\桌面\\a....
byte[] strbyte = new WebClient().DownloadData(str);
// File.WriteAllBytes("D:\\我的文档\\桌面\\a.xls", strbyte);
//MessageBox.Show("ok");
//MemoryStream bytememorystream = new MemoryStream(System.Text.Encoding.Default .GetBytes("<?xml version = \"1.0\" encoding =\"iso-8859-1\"?>"+ strbyte));
MemoryStream bytememorystream = new MemoryStream();
BinaryFormatter binaryformatter = new BinaryFormatter();
binaryformatter.Serialize(bytememorystream, strbyte);
bytememorystream.Position = 0;
dt = (DataTable)binaryformatter.Deserialize(bytememorystream);
/*
System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(bytememorystream);
dt.ReadXml(xtr);
dt.ReadXml(bytememorystream);
* /
从网站上抓取到了数据,放在 byte[] strbyte 里,如何放到DataTable中?
急!!!!!!!!!!!!!!!!!
不知道,我所有从网站下载的XLS文件或直接用此程序下载的XLS文件都要经过复制后程序才能读取,要不然显示“外部表不是预期的格式”,网上也是这么说的。我的EXCEL版本是2003, 我用此程序生成的EXCEL文件也不能直接读取,要复制之后才可以的。 展开
// File.WriteAllBytes("D:\\我的文档\\桌面\\a.xls", strbyte);
//MessageBox.Show("ok");
//MemoryStream bytememorystream = new MemoryStream(System.Text.Encoding.Default .GetBytes("<?xml version = \"1.0\" encoding =\"iso-8859-1\"?>"+ strbyte));
MemoryStream bytememorystream = new MemoryStream();
BinaryFormatter binaryformatter = new BinaryFormatter();
binaryformatter.Serialize(bytememorystream, strbyte);
bytememorystream.Position = 0;
dt = (DataTable)binaryformatter.Deserialize(bytememorystream);
/*
System.Xml.XmlTextReader xtr = new System.Xml.XmlTextReader(bytememorystream);
dt.ReadXml(xtr);
dt.ReadXml(bytememorystream);
* /
从网站上抓取到了数据,放在 byte[] strbyte 里,如何放到DataTable中?
急!!!!!!!!!!!!!!!!!
不知道,我所有从网站下载的XLS文件或直接用此程序下载的XLS文件都要经过复制后程序才能读取,要不然显示“外部表不是预期的格式”,网上也是这么说的。我的EXCEL版本是2003, 我用此程序生成的EXCEL文件也不能直接读取,要复制之后才可以的。 展开
3个回答
2012-06-06
展开全部
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bf = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
DataTable dt= bf.Deserialize(new System.IO.MemoryStream(strdata)) as DataTable;
DataTable dt= bf.Deserialize(new System.IO.MemoryStream(strdata)) as DataTable;
追问
二进制流“219”不包含有效的 BinaryHeader。这可能是由于无效流,或由于在序列化和反序列化之间的对象版本更改。 用您的语句后出现这个错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你确定strdata里面的数据是一个datatable序列化后的数据吗?
更多追问追答
追问
strbyte 不是序列后的数据,是从网站抓取下来的new WebClient().DownloadData(str);要把它放到datatable里去。
追答
要放到datatable里面去?那你自己新建啊,为啥要用反序列化?反序列化不是干这个事儿的。反序列化的意思是,如果你原始数据是一个datatable对象序列化出来的,那么可以通过反序列化还原这个原始的对象和它的内容。你这里应该自己建对象自己放值进去。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
他俩类型不匹配。你得转换一下类型。
更多追问追答
追问
我不知道如何转换啊! 他们分别是什么类型
追答
一个byte ,一个 DataTable。你转换成一个类型。在网上找下类型转换就有的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询