Показать полную графическую версию : Как выводить на печать отчет Crystal Reports
Большой Кол
22-04-2010, 20:35
Добрый день
Я слепил в проекте отчет Crystal Reports ( Проект - Добавить форму Windows - Reporting - Crystal Reports) , с тем чтобы создать отчет и вставить в него данные из базы , проблем не было, по сути это просто конструктор. И вот сделал я его, появился у меня в проекте файлик CrystalReport1.rpt, а что дальше? Вопрос в том как его вывести на принтер, а еще лучше вначале в Excel . Этого просто ни где не описано, как издеваются. Где можно про это почитать? А вот если бы еще и пример кода увидеть, то вообще было бы круто.
Заранее спасибо.
Delirium
23-04-2010, 00:36
Вопрос в том как его вывести на принтер, а еще лучше вначале в Excel »
Добавляете элемент на форму типа ReportViewer, в его параметрах указываете свой отчет. Там же будет кнопка Печать. ПО поводу выгрузки в Excel вообще много пересудов, если необходимо, могу кинуть кусок кода, который результат выполнения запроса кидает в Excel.
Большой Кол
23-04-2010, 15:01
Спасибо, кусок кода бы не повредил.
Delirium
26-04-2010, 01:02
Выгрузка в Excel списка из DataGridView (ну или из любого списка при корректировании кода ) :
public void ExportToExcel(DataGridView grid)
{
ApplicationClass Excel = new ApplicationClass();
XlReferenceStyle RefStyle = Excel.ReferenceStyle;
Excel.Visible = true;
Workbook wb = null;
String TemplatePath = System.Windows.Forms.Application.StartupPath + @"\Экспорт данных.xlt";
try
{
wb = Excel.Workbooks.Add(TemplatePath); // !!!
}
catch(System.Exception ex)
{
throw new Exception("Не удалось загрузить шаблон для экспорта " + TemplatePath + "\n" + ex.Message);
}
Worksheet ws = wb.Worksheets.get_Item(1) as Worksheet;
for(int j = 0; j < grid.Columns.Count; ++j)
{
(ws.Cells[1, j + 1] as Range).Value2 = grid.Columns[j].HeaderText;
for(int i = 0; i < grid.Rows.Count; ++i)
{
object Val = grid.Rows[i].Cells[j].Value;
if(Val != null)
(ws.Cells[i + 2, j + 1] as Range).Value2 = Val.ToString();
}
}
Excel.ReferenceStyle = RefStyle;
ws.Columns.EntireColumn.AutoFit();
ReleaseExcel(Excel as Object);
}
private void ReleaseExcel(object excel)
{
// Уничтожение объекта Excel.
Marshal.ReleaseComObject(excel);
// Вызываем сборщик мусора для немедленной очистки памяти
GC.GetTotalMemory(true);
}
А вообще куча кода находится в гугле: http://www.google.ru/#hl=ru&newwindow=1&q=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+Excel+%D0%9D%D0%B0+C%23&lr=&aq=f&aqi=&aql=&oq=%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0+%D1%81+Excel+%D0%9D%D0%B0+C%23&gs_rfai=&fp=8010ffb44f5de994
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.