使用vb.net将图片放在excel中的特定单元格中

我已经编码以下代码导出数据(包括图像)从datagridview到Excel中的Excel中一切正常,除了图片不放在他们所需的位置。 我没有find任何属于Shapes.addPicture()方法的方法来通过索引指定位置。 创build文件后,所有的图片都是默认在excel的开始像堆栈。 这是代码。

Dim xlApp As Microsoft.Office.Interop.Excel.Application Dim xlWorkBook As Microsoft.Office.Interop.Excel.Workbook Dim xlWorkSheet As Microsoft.Office.Interop.Excel.Worksheet Dim misValue As Object = System.Reflection.Missing.Value Dim i As Integer Dim j As Integer xlApp = New Microsoft.Office.Interop.Excel.Application xlWorkBook = xlApp.Workbooks.Add(misValue) xlWorkSheet = xlWorkBook.Sheets("sheet1") For k As Integer = 1 To DataGridView1.Columns.Count xlWorkSheet.Cells(1, k) = DataGridView1.Columns(k - 1).HeaderText Next Dim count As Integer = 0 For i = 0 To DataGridView1.RowCount - 1 For j = 0 To DataGridView1.ColumnCount - 1 Dim cj = DataGridView1(j, i).Value If (cj.GetType = GetType(System.Byte())) Then Dim data As Byte() = DirectCast(cj, Byte()) Dim ms As New System.IO.MemoryStream(data) Dim im As System.Drawing.Image = System.Drawing.Image.FromStream(ms) Dim h As String = "c:\h" + count.ToString + ".jpg" im.Save(h, Imaging.ImageFormat.Jpeg) xlWorkSheet.Shapes.AddPicture(h, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue, i + 2, j + 1, 100, 100) count += 1 Else xlWorkSheet.Cells(i + 2, j + 1) = DataGridView1(j, i).Value.ToString() End If Next Next xlWorkSheet.SaveAs("D:\vbexcel.xlsx") xlWorkBook.Close() xlApp.Quit() releaseObject(xlApp) releaseObject(xlWorkBook) releaseObject(xlWorkSheet) Dim res As MsgBoxResult res = MsgBox("Process completed, Would you like to open file?", MsgBoxStyle.YesNo) If (res = MsgBoxResult.Yes) Then Process.Start("d:\vbexcel.xlsx") End If 

AddPicture方法的lefttop参数指定图片左上angular和左上angular的顶点位置。 你似乎认为这将在细胞中 。 你需要计算点的大小,并使用这些数字。 excel中的图片坐在网格上方 – 而不是“in”。