我怎麼把图片存到XML裏。。然后再从XML中把图片显示在EXCEL 2003文档裏?我刚开始的思路是。。先用在EXCEL 2003裏插入一张图片,然后把EXCEL另存为XML数据格式,再用记事本打开。看看这样另存的图片是什麼格式或是什麼编码的,但是,结果让我失望之极,全是乱码。如果我能看到图片在EXCEL裏显示的编码,我想就用C#先转成这样的编码,然后再生成到XML中,再显示在EXCEL 2003 中。。 
这样应该可以解决问题..但現在全是乱码..
高手们。。进来帮我解决这一问题谢谢

解决方案 »

  1.   

    /**//// <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}
     
      

  2.   

    我的意思是在C#裏解析後的圖片,能生成到XML裏,同時,生成XML後,也能在EXCEL裏把解析後的圖片显示出来
      

  3.   

    /**//// <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}
     
      

  4.   

    C#把图片转为base64格式,但怎麼样才能让Excel 2003显示转換後的这个图片呢?
      

  5.   

     一.保存图片到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