C# XML Excel图片 处理

parellax 2010-11-06 05:01:59
我怎麼把图片存到XML裏。。然后再从XML中把图片显示在EXCEL 2003文档裏?

我刚开始的思路是。。先用在EXCEL 2003裏插入一张图片,然后把EXCEL另存为XML数据格式,再用记事本打开。看看这样另存的图片是什麼格式或是什麼编码的,但是,结果让我失望之极,全是乱码。

如果我能看到图片在EXCEL裏显示的编码,我想就用C#先转成这样的编码,然后再生成到XML中,再显示在EXCEL 2003 中。。
这样应该可以解决问题..但現在全是乱码..


高手们。。进来帮我解决这一问题。。。谢谢
...全文
344 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
原来不是怕 2011-08-02
  • 打赏
  • 举报
回复
求解,求代码
hxianling 2010-11-10
  • 打赏
  • 举报
回复
 一.保存图片到XML文件

  /// <summary>

  /// 保存图片到XML文件

  /// </summary>

  private void UploadImageToXml()

  {

  ///得到用户要上传的文件名

  string strFilePathName = loFile.PostedFile.FileName;

  string strFileName = Path.GetFileName(strFilePathName);

  int FileLength = loFile.PostedFile.ContentLength;

  if(FileLength<=0)

  return;

  try

  {

  ///图象文件临时储存Byte数组

  Byte[] FileByteArray = new Byte[FileLength];

  ///建立数据流对像

  Stream StreamObject = loFile.PostedFile.InputStream;

  ///读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度

  StreamObject.Read(FileByteArray,0,FileLength);

  ///要打开的文件

  string fileName = Server.MapPath(".\\WriteXml.xml");

  XmlDocument xmlDoc = new XmlDocument();

  xmlDoc.Load(fileName);

  ///查找<dbGuest>

  XmlNode root=xmlDoc.SelectSingleNode("dbImage");

  XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;

  int nIndex = xnl.Count;

  ///以下添加新结点

  XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点

  XmlElement xesub1=xmlDoc.CreateElement("ImageID");

  ///设置文本节点

  xesub1.InnerText=nIndex.ToString();

  ///添加到<User>节点中

  xe1.AppendChild(xesub1);

  XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");

  xesub2.InnerText=loFile.PostedFile.ContentType;

  xe1.AppendChild(xesub2);

  XmlElement xesub3=xmlDoc.CreateElement("ImageSize");

  xesub3.InnerText=FileLength.ToString();

  xe1.AppendChild(xesub3);

  XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");

  xesub4.InnerText=tbDescription.Text;

  xe1.AppendChild(xesub4);

  XmlElement xesub5=xmlDoc.CreateElement("ImageData");

  xesub5.InnerText= Convert.ToBase64String(FileByteArray);

  xe1.AppendChild(xesub5);

  ///添加到<dbGuest>节点中

  root.AppendChild(xe1);

  xmlDoc.Save(fileName);

  Response.Redirect("ShowAllImg.aspx");

  }

  catch(Exception ex)

  {

  throw ex;

  }

  }


文章转载自网管之家:http://www.bitscn.com/pdb/dotnet/201003/181785.html
parellax 2010-11-10
  • 打赏
  • 举报
回复
怎麼沒有人呢...
parellax 2010-11-10
  • 打赏
  • 举报
回复
C#把图片转为base64格式,但怎麼样才能让Excel 2003显示转換後的这个图片呢?
deyygywxf 2010-11-08
  • 打赏
  • 举报
回复
/**//// <summary>
2/// 保存图片到XML文件
3/// </summary>
4private void UploadImageToXml()
5{
6 /**////得到用户要上传的文件名
7 string strFilePathName = loFile.PostedFile.FileName;
8 string strFileName = Path.GetFileName(strFilePathName);
9 int FileLength = loFile.PostedFile.ContentLength;
10 if(FileLength<=0)
11 return;
12 try
13 {
14 /**////图象文件临时储存Byte数组
15 Byte[] FileByteArray = new Byte[FileLength];
16
17 /**////建立数据流对像
18 Stream StreamObject = loFile.PostedFile.InputStream;
19
20 /**////读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
21 StreamObject.Read(FileByteArray,0,FileLength);
22
23 /**////要打开的文件
24 string fileName = Server.MapPath(".\\WriteXml.xml");
25
26 XmlDocument xmlDoc = new XmlDocument();
27 xmlDoc.Load(fileName);
28
29 /**////查找<dbGuest>
30 XmlNode root=xmlDoc.SelectSingleNode("dbImage");
31 XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
32 int nIndex = xnl.Count;
33
34 /**////以下添加新结点
35 XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
36
37 XmlElement xesub1=xmlDoc.CreateElement("ImageID");
38
39 /**////设置文本节点
40 xesub1.InnerText=nIndex.ToString();
41
42 /**////添加到<User>节点中
43 xe1.AppendChild(xesub1);
44 XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
45 xesub2.InnerText=loFile.PostedFile.ContentType;
46 xe1.AppendChild(xesub2);
47 XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
48 xesub3.InnerText=FileLength.ToString();
49 xe1.AppendChild(xesub3);
50 XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
51 xesub4.InnerText=tbDescription.Text;
52 xe1.AppendChild(xesub4);
53 XmlElement xesub5=xmlDoc.CreateElement("ImageData");
54 xesub5.InnerText= Convert.ToBase64String(FileByteArray);
55 xe1.AppendChild(xesub5);
56
57 /**////添加到<dbGuest>节点中
58 root.AppendChild(xe1);
59 xmlDoc.Save(fileName);
60
61 Response.Redirect("ShowAllImg.aspx");
62 }
63 catch(Exception ex)
64 {
65 throw ex;
66 }
67}

二.从XML中读取图片数据

1/**//// <summary>
2/// 从XML中读取图片
3/// </summary>
4/// <param name="ImageID">图片ID</param>
5private void ReadImageFromXml(string ImageID)
6{
7 /**////ID为图片ID
8 int ImgID = Convert.ToInt32(ImageID);
9
10 /**////要打开的文件
11 string fileName = Server.MapPath(".\\WriteXml.xml");
12
13 XmlDocument xmlDoc = new XmlDocument();
14 xmlDoc.Load(fileName);
15 XmlNodeList node = xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
16 if(node!=null)
17 {
18 string strType = node.Item(1).InnerText;
19 string strData =node.Item(4).InnerText;
20 int nSize = int.Parse(node.Item(2).InnerText);
21
22 /**////设定输出文件类型
23 Response.ContentType = strType;
24
25 /**////输出图象文件二进制数制
26 Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize);
27 Response.End();
28
29 //也可以保存为图像
30 //FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
31 //fs.Write((Convert.FromBase64String(strData), 0,nSize);
32 //fs.Close();
33 }
34}


parellax 2010-11-07
  • 打赏
  • 举报
回复
没有高手进来帮我解决这个问题吗?
parellax 2010-11-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dingyazhi520 的回复:]

/**//// <summary>
2/// 保存图片到XML文件
3/// </summary>
4private void UploadImageToXml()
5{
6 /**////得到用户要上传的文件名
7 string strFilePathName = loFile.PostedFile.FileName;
8 string strFileName = Path.Ge……
[/Quote]


我的意思是。。。在C#裏解析後的圖片,能生成到XML裏,同時,生成XML後,也能在EXCEL裏把解析後的圖片显示出来
dingyazhi520 2010-11-06
  • 打赏
  • 举报
回复
/**//// <summary>
2/// 保存图片到XML文件
3/// </summary>
4private void UploadImageToXml()
5{
6 /**////得到用户要上传的文件名
7 string strFilePathName = loFile.PostedFile.FileName;
8 string strFileName = Path.GetFileName(strFilePathName);
9 int FileLength = loFile.PostedFile.ContentLength;
10 if(FileLength<=0)
11 return;
12 try
13 {
14 /**////图象文件临时储存Byte数组
15 Byte[] FileByteArray = new Byte[FileLength];
16
17 /**////建立数据流对像
18 Stream StreamObject = loFile.PostedFile.InputStream;
19
20 /**////读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
21 StreamObject.Read(FileByteArray,0,FileLength);
22
23 /**////要打开的文件
24 string fileName = Server.MapPath(".\\WriteXml.xml");
25
26 XmlDocument xmlDoc = new XmlDocument();
27 xmlDoc.Load(fileName);
28
29 /**////查找<dbGuest>
30 XmlNode root=xmlDoc.SelectSingleNode("dbImage");
31 XmlNodeList xnl=xmlDoc.SelectSingleNode("dbImage").ChildNodes;
32 int nIndex = xnl.Count;
33
34 /**////以下添加新结点
35 XmlElement xe1=xmlDoc.CreateElement("Image");//创建一个<User>节点
36
37 XmlElement xesub1=xmlDoc.CreateElement("ImageID");
38
39 /**////设置文本节点
40 xesub1.InnerText=nIndex.ToString();
41
42 /**////添加到<User>节点中
43 xe1.AppendChild(xesub1);
44 XmlElement xesub2=xmlDoc.CreateElement("ImageContentType");
45 xesub2.InnerText=loFile.PostedFile.ContentType;
46 xe1.AppendChild(xesub2);
47 XmlElement xesub3=xmlDoc.CreateElement("ImageSize");
48 xesub3.InnerText=FileLength.ToString();
49 xe1.AppendChild(xesub3);
50 XmlElement xesub4=xmlDoc.CreateElement("ImageDescription");
51 xesub4.InnerText=tbDescription.Text;
52 xe1.AppendChild(xesub4);
53 XmlElement xesub5=xmlDoc.CreateElement("ImageData");
54 xesub5.InnerText= Convert.ToBase64String(FileByteArray);
55 xe1.AppendChild(xesub5);
56
57 /**////添加到<dbGuest>节点中
58 root.AppendChild(xe1);
59 xmlDoc.Save(fileName);
60
61 Response.Redirect("ShowAllImg.aspx");
62 }
63 catch(Exception ex)
64 {
65 throw ex;
66 }
67}

二.从XML中读取图片数据

1/**//// <summary>
2/// 从XML中读取图片
3/// </summary>
4/// <param name="ImageID">图片ID</param>
5private void ReadImageFromXml(string ImageID)
6{
7 /**////ID为图片ID
8 int ImgID = Convert.ToInt32(ImageID);
9
10 /**////要打开的文件
11 string fileName = Server.MapPath(".\\WriteXml.xml");
12
13 XmlDocument xmlDoc = new XmlDocument();
14 xmlDoc.Load(fileName);
15 XmlNodeList node = xmlDoc.SelectSingleNode("//Image[ImageID='"+ImgID.ToString()+"']").ChildNodes;
16 if(node!=null)
17 {
18 string strType = node.Item(1).InnerText;
19 string strData =node.Item(4).InnerText;
20 int nSize = int.Parse(node.Item(2).InnerText);
21
22 /**////设定输出文件类型
23 Response.ContentType = strType;
24
25 /**////输出图象文件二进制数制
26 Response.OutputStream.Write(Convert.FromBase64String(strData), 0, nSize);
27 Response.End();
28
29 //也可以保存为图像
30 //FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
31 //fs.Write((Convert.FromBase64String(strData), 0,nSize);
32 //fs.Close();
33 }
34}


111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧