Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net excel报表生成中的问题_Vb.net_Excel - Fatal编程技术网

Vb.net excel报表生成中的问题

Vb.net excel报表生成中的问题,vb.net,excel,Vb.net,Excel,我正在处理Excel报告,我希望顶部的行为空,以便插入图像。但是,我不希望图像大小改变列的宽度,而是希望下面的数据可以这样做 这就是我到目前为止所做的: If ComDset.Tables(0).Rows.Count > 0 Then Try With Excel .SheetsInNewWorkbook = 1 .Workbooks.Add() .Worksheets(1).Selec

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

我建议尝试“合并”前两行中的单元格。你可以从A1到K2,然后把它们合并在一起,这样图像就可以很好地放进去了

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

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

.Workbooks.Add("path\to\report_template.xlt")
 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
要使图像大小固定且不受列宽影响,请右键单击图像,选择“设置图片格式…”,打开“属性”选项卡,然后在“对象定位”中选择“不移动或使用单元格调整大小”

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

ActiveSheet.Pictures.Insert( "path\to\image.jpg" ).Select
With Selection
    .Placement = xlFreeFloating
    .PrintObject = True
End With
通过将行变量初始化为适当的值,可以控制用于输出数据的第一行

您还可以使用自动调整方法调整列大小以匹配数据

然后,您的代码可能如下所示:

.Workbooks.Add("path\to\report_template.xlt")
 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

为OutPuple变量选择一个合适的初始值,为您的图像提供足够的空间。

< P>另一个要考虑的问题,如果图像仅用于打印报表,则将其放入页面页眉。

Worksheets(1).PageSetup.LeftHeaderPicture.Filename = "C:\header.JPG"
图像将嵌入到文件中。它仅在“打印预览”模式和打印报告时可见