Excel报告生成中的问题

我正在处理一个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 

我会build议尝试“合并”顶部2行的单元格。 你可以通过K2说A1并合并它们,图像就可以在那里很好地适应了。

 Range("A1:K2").Select Selection.Merge 

使用包含图像创build报告的一种方法是创build一个模板工作簿(.xlt文件),其中已经设置了所需的格式和图像。 然后在您的代码中,从模板中创build新的报告工作簿,如下所示:

 .Workbooks.Add("path\to\report_template.xlt") 

要使图像的大小与列宽无关,请右键单击它,select“格式化图片…”,打开“属性”选项卡,在“对象定位”中select“不要移动或使用单元格大小”。

或者,使用代码将图片添加到空白工作簿,如下所示:

 ActiveSheet.Pictures.Insert( "path\to\image.jpg" ).Select With Selection .Placement = xlFreeFloating .PrintObject = True End With 

您可以通过将行variables初始化为适当的值来控制要用于输出数据的第一行。

您还可以使用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 

为outputRowvariablesselect合适的初始值,为图像提供足够的空间。

如果图像仅用于打印报告,可以考虑将其放入页眉中。

 Worksheets(1).PageSetup.LeftHeaderPicture.Filename = "C:\header.JPG" 

图像将被embedded到文件中。 只有在“打印预览”模式和打印报告时才能看到。