2009-09-03 10 views
2

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 

答えて

1

私はトップ2行のセルを「マージ」しようとしていることをお勧めします。画像が含まれてあなたは、テンプレートのワークブック(.xltファイル)を作成し、レポートを作成するために...

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

一つの方法をされて言うK2をA1を取り、それらをマージし、画像がそこにうまく収まるようにでき必要な書式設定とイメージをすでに設定しています。次に、あなたのコードでは、このようなテンプレートから新しいレポートワークブックの作成:あなたの画像のサイズが固定され、列幅の依存しないようにするに

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

を、それを右クリックし、「図の書式設定...」を選択しますPropertiesタブを開き、Object Positioning内で「Do not move or cells with size」を選択します。

あるいは、以下のようにブランクブックに画像を追加するために使用コード:

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変数に適切な初期値を選択します。

0

イメージが印刷されたレポートにのみ必要な場合は、それをページヘッダーに配置します。

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

イメージはファイルに埋め込まれます。 「印刷プレビュー」モードとレポートの印刷時にのみ表示されます。

関連する問題