我正在处理Excel报告,我希望顶行为空以允许插入图像。但是,我不希望图像大小改变列的宽度,而是希望下面的数据可以做到这一点。
这是我到目前为止所做的:
If ComDset.Tables(0).Rows.Count > 0 Then
Try
With Excel
.SheetsInNewWorkbook = 1
.Workbooks.Add()
.Worksheets(1).Select()
Dim i As Integer = 1
For col = 0 To ComDset.Tables(0).Columns.Count - 1
.cells(1, i).value = ComDset.Tables(0).Columns(col).ColumnName
.cells(1, i).EntireRow.Font.Bold = True
i += 1
Next
i = 2
Dim k As Integer = 1
For col = 0 To ComDset.Tables(0).Columns.Count - 1
i = 2
For row = 0 To ComDset.Tables(0).Rows.Count - 1
.Cells(i, k).Value = ComDset.Tables(0).Rows(row).ItemArray(col)
i += 1
Next
k += 1
Next
filename = "ShiftReport" & Format(MdbDate, "dd-MM-yyyy") & ".xls"
.ActiveCell.Worksheet.SaveAs(filename)
End With
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
Excel = Nothing
Catch ex As Exception
MsgBox(ex.Message)
End Try
' The excel is created and opened for insert value. We most close this excel using this system
Dim pro() As Process = System.Diagnostics.Process.GetProcessesByName("EXCEL")
For Each i As Process In pro
i.Kill()
Next
End If
答案 0 :(得分:1)
我建议尝试“合并”前两行中的单元格。您可以通过说K2来取A1并合并它们,图像在那里很合适......
Range("A1:K2").Select
Selection.Merge
答案 1 :(得分:0)
使用包含图像创建报告的一种方法是创建模板工作簿(.xlt文件),您已在其中设置了所需的格式和图像。然后在您的代码中,从模板创建新的报表工作簿,如下所示:
.Workbooks.Add("path\to\report_template.xlt")
要使图像大小固定且与列宽无关,请右键单击它,选择“格式化图片...”,打开“属性”选项卡,然后在“对象定位”中选择“不移动或使用单元格调整大小”
或者,使用代码将图片添加到空白工作簿中,如下所示:
ActiveSheet.Pictures.Insert( "path\to\image.jpg" ).Select
With Selection
.Placement = xlFreeFloating
.PrintObject = True
End With
您可以通过将行变量初始化为适当的值来控制用于输出数据的第一行。
您还可以使用AutoFit方法调整列大小以匹配您的数据。
您的代码可能如下所示:
Try
With Excel
.SheetsInNewWorkbook = 1
.Workbooks.Add("path\to\report_template.xlt")
.Worksheets(1).Select()
Dim outputRow As Integer = 8
For col = 0 To ComDset.Tables(0).Columns.Count - 1
.Cells(outputRow, col+1).value = ComDset.Tables(0).Columns(col).ColumnName
.Cells(outputRow, col+1).EntireRow.Font.Bold = True
Next
outputRow += 1
For y = 0 To ComDset.Tables(0).Rows.Count - 1
For x = 0 To ComDset.Tables(0).Columns.Count - 1
.Cells(outputRow + y, x).Value = ComDset.Tables(0).Rows(y).ItemArray(x)
Next
Next
.Cells(outputRow, 1).CurrentRegion.Columns.AutoFit
filename = "ShiftReport" & Format(MdbDate, "dd-MM-yyyy") & ".xls"
.ActiveCell.Worksheet.SaveAs(filename)
End With
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel)
Excel = Nothing
Catch ex As Exception
MsgBox(ex.Message)
End Try
为outputRow变量选择合适的初始值,为图像提供足够的空间。
答案 2 :(得分:0)
如果只有打印报告需要图像,则可以考虑将其放入页眉。
Worksheets(1).PageSetup.LeftHeaderPicture.Filename = "C:\header.JPG"
图像将嵌入文件中。它仅在“打印预览”模式下以及打印报告时可见。