Как отправить параметр из C #, чтобы преуспеть и сохранить данные там - PullRequest
0 голосов
/ 24 января 2012

У меня есть 2 проблемы, с которыми я сталкиваюсь

  • у меня есть набор данных, в который мне нужно отправить данные из набора данных в Excel, когда данные сбрасываются в этом месте.

  • мне нужно изменить заголовки столбцов, сделать их жирным шрифтом

2: Над заголовками отчета мы должны передать 1 параметр, который будет именем (сведения о сотруднике) из c #, который мы должны передать в качестве параметра ему. он может изменить любой параметр, который мы передаем.

например: Имя отчета: Данные сотрудника

  Name      EmpID   city
  Arun        11       bangalore
  Kiran       56       chennai
  Rahul       23       pune

1 Ответ

0 голосов
/ 24 января 2012

Следующее должно работать, но я его не тестировал. Спасибо Деборе Курате за написание большей части кода ниже.

using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;

private void ExportToExcel(DataTable Table, string ReportName, string Filename)
{
  Excel.Application oXL;
  Excel.Workbook oWB;
  Excel.Worksheet oSheet;
  Excel.Range oRange;

  // Start Excel and get Application object.
  oXL = new Excel.Application();

  // Set some properties
  oXL.Visible = true;
  oXL.DisplayAlerts = false;

  // Get a new workbook.
  oWB = oXL.Workbooks.Add(Missing.Value);

  // Get the active sheet
  oSheet = (Excel.Worksheet)oWB.ActiveSheet ;
  oSheet.Name = "Report";

  int rowCount = 3;
  foreach (DataRow dr in Table.Rows)
  {
      for (int i = 1; i < Table.Columns.Count+1; i++)
      {
          // Add the header the first time through
          if (rowCount==3)
          {
              oSheet.Cells[1, i] = Table.Columns[i - 1].ColumnName;
              rowCount++;
          }
          oSheet.Cells[rowCount, i] = dr[i - 1].ToString();
      }
      rowCount++;
  }

  // Resize the columns
  oRange = oSheet.get_Range(oSheet.Cells[3, 1],
                oSheet.Cells[rowCount, Table.Columns.Count]);
  oRange.EntireColumn.AutoFit();

  // Set report title *after* we adjust column widths
  oSheet.Cells[1,1] = ReportName;

  // Save the sheet and close
  oSheet = null;
  oRange = null;
  oWB.SaveAs(Filename, Excel.XlFileFormat.xlWorkbookNormal,
      Missing.Value, Missing.Value, Missing.Value, Missing.Value,
      Excel.XlSaveAsAccessMode.xlExclusive,
      Missing.Value, Missing.Value, Missing.Value,
      Missing.Value, Missing.Value);
  oWB.Close(Missing.Value, Missing.Value, Missing.Value);
  oWB = null;
  oXL.Quit();

  // Clean up
  // NOTE: When in release mode, this does the trick
  GC.WaitForPendingFinalizers();
  GC.Collect();
  GC.WaitForPendingFinalizers();
  GC.Collect();
}
...