网上查资料修改后代码如下:
最近在做项目,需要将Excel中的图片读取且保存在服务器文件夹中,到最后一步的时候无法保存到文件夹中。报GDI+错误~~~
思路如下:
1.在Excel 中找到存放图片的位置:xl/media/image.bin
2.将上面的1转换成Stream流
3.转换成base64String
4.将base64String 转换成图片然后Save() 到目录
以下是代码:
ImagePart ip = dp.DrawingsPart.Parts.Single(c => c.RelationshipId == _Embed).OpenXmlPart as ImagePart;
//imgExtension = System.IO.Path.GetExtension(ip.Uri.ToString());
Stream stream = ip.GetStream(FileMode.Open, FileAccess.Read);
//图片路径
//string path = ip.Uri.OriginalString;
using (BinaryReader reader = new BinaryReader(stream))
{
byte[] buffer = new byte[reader.BaseStream.Length];
reader.Read(buffer, 0, Convert.ToInt32(buffer.Length));
string base64String = Convert.ToBase64String(buffer);
using (MemoryStream streamBitmap = new MemoryStream(buffer))
{
Bitmap bitImage = new Bitmap((Bitmap)System.Drawing.Image.FromStream(streamBitmap));
bitImage.Save(filePath);
bitImage.Dispose();
}
}
stream.Dispose();
确认一下filePath所属的文件夹是否存在?如果不存在,创建一下文件夹。
恩,是的 确实是路径写错了,谢谢你们了
确定你的思路是可行的, 因为我写代码验证了。
那问题应该出在别的地方,你好好找找吧。
恩,谢谢了,
是我路径不对。