2009-09-03 8 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 верхних рядах. Вы можете взять A1 через сказать, K2 и объединить их, и изображение будет соответствовать очень хорошо там ...

Range("A1:K2").Select 
Selection.Merge 
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 

Вы можете контролировать первую строку можно использовать для вывода данных по инициализации переменной строки в соответствующее значение.

Вы также можете установить размеры столбцов в соответствии с вашими данными с помощью метода автозапуска.

Ваш код может выглядеть следующим образом:

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" 

Изображение будет размещено в файле. Он будет отображаться только в режиме «Предварительный просмотр» и при печати отчета.

Смежные вопросы