前面已经说了如何导出EXCEL,这里就不重复说明。
首先我们要得到图片的路径 filename;这个路径可能是网络图片,可能是fusionCharts或者ECharts等等,这个就根据项目具体情况来看了。
/// <summary>ljr
/// webservice 获取图片的流,并且返回图片的高度宽度
/// </summary>
/// <returns></returns>
[DirectMethod]
private System.IO.Stream getStream(string filename, out string height, out string width)
{
System.Net.HttpWebRequest webRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(filename);
webRequest.Method = "GET";
System.Net.HttpWebResponse webResponse = (System.Net.HttpWebResponse)webRequest.GetResponse();
System.IO.Stream s = webResponse.GetResponseStream();
List<byte> list = new List<byte>();
while (true)
{
int data = s.ReadByte();
if (data == -1)
break;
else
{
byte b = (byte)data;
list.Add(b);
}
}
byte[] bb = list.ToArray();
System.IO.Stream stream = new System.IO.MemoryStream(bb);
System.Drawing.Bitmap img = new System.Drawing.Bitmap(stream);
height = img.Height.ToString();
width = img.Width.ToString();
return stream;
}
导出图片的代码:
/ljr 增加图片行 getStream方法传入图片路径即可
string height = "", width = "";
System.IO.Stream st = getStream(imgUrl, out height, out width);
ws.Shapes.AddPicture(0, 0, st, 100, 6);//这里参数可以自行查看提示。图片所占的单元格,100表示占宽度的100%,但是高度不知道是占什么的百分比
var imgRange = ws.Cells.CreateRange(rowIndex, 0, 1, lastColIndex);
imgRange.ApplyStyle(style,
styleFlag);
imgRange.RowHeight = int.Parse(height);//高度有效果
imgRange.Merge();
这里传出高度和宽度,主要是为了导出的图片能够自己定义高度宽度,但是貌似没什么效果。或者我还没有找到它的规律,哪位大侠找到了也可以留言说一下。