Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Базы данных под .NET > Создание отчета


Автор: Redstuff 28.8.2007, 14:08
Нужно сделать отчет в .html виде желательно, но еще лучше .html  + .doc + .xls
Не знаю с чего начать, нашел пока только http://forum.vingrad.ru/index.php?showtopic=162299&view=findpost&p=1189806 тут пример.
Но уже столкнулся с проблемой 
Код

using Office;

Что надо добавить в Reference?

Автор: andrx 28.8.2007, 14:45
смотри прикрепленный файл, думаю немного поможет
в Reference добавь COM объекты Exel и Word

Автор: Redstuff 28.8.2007, 15:25
andrx, да вроде их и добавлял из COM, Microsoft.... Excel & Word.
Они щас в reference находятся как Excel, Word

За файлик спасибо гляну!

Автор: andrx 28.8.2007, 15:36
Цитата

Но уже столкнулся с проблемой 
Код

 using Office;


я писал так
Код

using Microsoft.Office;

Автор: Experimenter 28.8.2007, 19:49
А я так вообще никакой юзинг не ставил (правда это был VBNET 2003, там Imports)
Код

Imports System
Imports System.IO
Imports System.Data
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Xml

и все...
Дальше по коду:
Код

        Dim objxls As New Excel.Application
        objxls.Workbooks.Open("D:\Мои документы\Visual Studio Projects\...\отчет.xls", ReadOnly:=False)
        ' и делаешь с objxls все, что нравится через Range

и работает!
Жаль, что не сохранился проект по Ворду

Автор: Redstuff 29.8.2007, 18:00
А есть примеры где отчет в html получить можно, все-таки он предпочтительней мне...?
А то с офисом что-то трудновато разобраться  smile 

Или может кто кинуть рабочий пример сюда или на мыло? Очень время поджимает для сдачи курсача...

Автор: levely 30.8.2007, 09:19
    Не знаю,насколько умно я делала...Но когда приспичило,самым простым мне показалось сделать отчет как раз в HTML. Так я просто создала несколько файлов-шаблонов на HTML. Потом в коде их считывала и добавляла в нужные мне таблицы строки (разметку,теги + мои данные). Итог сохраняла в конечный файл МОЙОТчет.HTML.

   Способ конечно муторный...Но в принципе,за неимением лучшего, очень даже прокатывает.
    

Автор: Experimenter 30.8.2007, 11:15
Redstuff, 
Цитата

А то с офисом что-то трудновато разобраться 

это только кажется так...
А в эту сторону не смотрел?
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.en/rs_vsrptsmref/html/T_Microsoft_Reporting_WebForms_LocalReport.htm
Код

protected void Button1_Click(object sender, EventArgs e)
{

   Microsoft.Reporting.WebForms.LocalReport lr = 
     new Microsoft.Reporting.WebForms.LocalReport();

   string deviceInfo =
     "<DeviceInfo>" +
     "<SimplePageHeaders>True</SimplePageHeaders>" + 
     "</DeviceInfo>";

   lr.ReportPath = @"C:\My Reports\Monthly Sales.rdlc";

   lr.DataSources.Add(new ReportDataSource("Sales", GetSalesData()));

   byte[] bytes = lr.Render("Excel", deviceInfo, out mimeType, 
     out encoding, out streamids, out warnings);

      using (FileStream fs = new FileStream(@"c:\My Reports\Monthly Sales.xls", FileMode.Create))
      {
        fs.Write(bytes, 0, bytes.Length);
        fs.Close();
      }
}


Добавлено через 9 минут и 14 секунд
и в эту:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/CPref17/html/T_System_Windows_Forms_HtmlDocument.htm
код приводить не буду, много букаф там, но если МСДН недоступен по каким-то причинам, то сделаю.

Добавлено через 12 минут и 47 секунд
при ближайшем рассмотрении последняя ссылка вообще кучерявая!!! Только ограничение там на второй фреймворк.

Автор: Redstuff 30.8.2007, 11:35
Experimenter, да если можно то плиз ссылочку в инете или код, а то чето не хочет открываться через помощь студии(

Автор: Experimenter 30.8.2007, 13:55
http://msdn2.microsoft.com/en-us/library/system.windows.forms.htmldocument(vs.80).aspx

Автор: Redstuff 31.8.2007, 14:06
Experimenter, по той ссылочки чето на веббраузер ничего не выводит...
Что в референс надо добавить чтоб использовать:? а то подходящего ничего не нашел.
Код

using System.Windows.Forms.HtmlDocument;

Я так понимаю без этого должны были быть ошибки? но их нет

Эту функцию поставил на клик мыши, с исправлениями подключения к БД и все.
Код

DisplayCustomersTable()

Что мог еще не усмотреть в примере? чтоб добиться нормальной работы

Автор: CYBERDREAM 31.8.2007, 14:35
Лично я отчет в html делал вручную, заготовил все теги, и если нужно было вывести таблицу какую то, то через while  и т.д., хотя может и не разумно, за то ясно как Божий день. Сохранял файлик и запускал его.

Автор: Experimenter 31.8.2007, 18:28
там ведь условие:
Код

if (webBrowser1.Document != null)
если его закомментить, то будет тебе исключение NullReferenceException
на строчке
Код

HtmlElement tableElem = doc.CreateElement("TABLE");

следовательно, у веббраузера не существует документа, как его заюзать, пока не знаю.

Автор: Experimenter 31.8.2007, 20:07
Redstuff, в общем такая вот байда:
Во-первых, прописал в свойствах веб-браузера:
Код

webBrowser1.DocumentText = "<HTML><BODY></BODY></HTML>";

NullReferenceException стал вылетать на строке:
Код

doc.Body.AppendChild(tableElem);

НО: как только перед этой несчастной строкой я поставил:
Код

MessageBox.Show(tableElem.TagName);

exception куда-то исчез, появлялась мессага с именем тэга элемента, после клика на мессаге веб-браузер таки отобразил мне отчет.
Это выше моего понимания, может, травы покурить? пока я осознал свою полную никчемность и закончил исследования в этой области до снисхождения на меня озарения...

Автор: Redstuff 31.8.2007, 21:35
Experimenter, действительно что-то странное... Еще, если в браузере просмотреть html код, то там только то, что присвоили: 
Код

webBrowser1.DocumentText = "<HTML><BODY></BODY></HTML>";

Хотя текст отображается...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)