62,046
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// 将图片填充到Excel中的某个或某些单元格中
/// </summary>
/// <param name="ws">Microsoft.Office.Interop.Excel.Worksheet</param>
/// <param name="m_objRange"> Microsoft.Office.Interop.Excel.Range</param>
/// <param name="PicturePath">插入图片的绝对物理路径</param>
/// <param name="IsMergeCells">是否合并上面的单元格</param>
public void InsertPicture(Microsoft.Office.Interop.Excel.Worksheet ws, Microsoft.Office.Interop.Excel.Range m_objRange, string PicturePath, bool IsMergeCells)
{
//计算单元格的宽和高
float PictuteWidth, PictureHeight;
PictuteWidth = Convert.ToSingle(m_objRange.Width);
PictureHeight = Convert.ToSingle(m_objRange.Height);
PictuteWidth = 150;
PictureHeight = 200;
if (IsMergeCells)
{
//合并单元格
m_objRange.Merge(System.Reflection.Missing.Value);
}
m_objRange.Select();
float PicLeft, PicTop;
PicLeft = Convert.ToSingle(m_objRange.Left);
PicTop = Convert.ToSingle(m_objRange.Top);
ws.Shapes.AddPicture(PicturePath, Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft+2, PicTop, PictuteWidth, PictureHeight);
}
调用
Microsoft.Office.Interop.Excel.Range rg = (Microsoft.Office.Interop.Excel.Range)ws.Cells[j + 2, k + 1];
if (dt.Columns[k].ColumnName=="Thumbnails")
{
#region 生成图片
string filePath = Application.StartupPath + "//NetPagePic//" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
Image img= BytesToImage((byte[])dt.Rows[j][k]);
img.Save(filePath);
#endregion
InsertPicture(ws, rg, filePath, true);//向Excel插入图片
File.Delete(filePath);//删除文件
rg.RowHeight = 200;
rg.ColumnWidth =25;//宽度设置为150时在Excel中实际宽度大大超出了150。顾修改为25
}
else
{
rg.NumberFormatLocal = "@";
ws.Cells[j + 2, k + 1] = dt.Rows[j][k].ToString();
}