Отчет в xml

В статье показывается как можно легко создать отчет в формате Microsoft Excel используя Xml Spreadsheet

Довольно часто возникает задача создать отчет в формате Microsoft Excel и для его реализации можно использовать разные решения. Типичными решениями являются:

  • запустить Microsoft Excel и с помошью внешнего управления сформировать в нем отчет;
  • воспользоваться Crystal Reports;
  • воспользоваться Microsoft Sql Server Reporting Services;
  • создать файл руками в формате Xml Spreadsheet.

В данной статье я покажу как создать отчет четвертым способом. Для начала посмотрим, что же из себя представляет формат Xml Spreadsheet, для этого пройдем по ссылке http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k2/html/odc_xmlss.asp. Надеюсь голова не закружилась от столь огромного документа.

Решение я реализую для ASP.NET. Для Windows Forms приложения решение выглядит аналогично, только вместо ASP.NET страницы мы записываем файл прямо на диск.

Для начала создадим ASP.NET страничку, которая будет доставать данные для отчета из БД, и трансформировать их в файл в формате Xml Spreadsheet. В качестве источника данных я буду использовать стандартную БД для MS Sql Server — pubs.

Следующий запрос выбирает авторов и количесто их книг, которые были проданы.

SELECT authors.au_lname AS LastName, authors.au_fname AS FirstName, SUM(sales.qty) AS Qty FROM titleauthor INNER JOIN authors ON titleauthor.au_id = authors.au_id INNER JOIN sales ON titleauthor.title_id = sales.title_id GROUP BY authors.au_lname, authors.au_fname ORDER BY SUM(sales.qty) DESC

Напишем код, который помещает результаты данного запроса в DataSet

string connStr = «server=localhost;database=pubs;trusted_connection=true»; using (SqlConnection connection = new SqlConnection(connStr)) { string sql = @» SELECT authors.au_lname AS LastName, authors.au_fname AS FirstName, SUM(sales.qty) AS Qty FROM titleauthor INNER JOIN authors ON titleauthor.au_id = authors.au_id INNER JOIN sales ON titleauthor.title_id = sales.title_id GROUP BY authors.au_lname, authors.au_fname ORDER BY SUM(sales.qty) DESC»; SqlCommand command = new SqlCommand(sql,connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet ds = new DataSet(«TestDataSet»); adapter.Fill(ds,»TestTable»); }

Далее мы можем получить содержимое этого DataSet’а в XML путем вызова метода GetXml().Ниже Вы можете посмотреть пример его содержимого в XML формате.

<TestDataSet> <TestTable> <LastName>Ringer</LastName> <FirstName>Anne</FirstName> <Qty>148</Qty> </TestTable> <TestTable> <LastName>Ringer</LastName> <FirstName>Albert</FirstName> <Qty>133</Qty> </TestTable> <TestTable> <LastName>Dull</LastName> <FirstName>Ann</FirstName> <Qty>50</Qty> </TestTable> … </TestDataSet>

Создадим шаблон трансформации, который будет формировать наши Xml данные в отчет в формате Xml Spreadsheet.

Пример шаблона (template.xslt): <?xml version=»1.0″ encoding=»utf-8″ ?> <xsl:stylesheet version=»1.0″ xmlns:xsl=»http://www.w3.org/1999/XSL/Transform» xmlns=»urn:schemas-microsoft-com:office:spreadsheet» xmlns:o=»urn:schemas-microsoft-com:office:office» xmlns:x=»urn:schemas-microsoft-com:office:excel» xmlns:ss=»urn:schemas-microsoft-com:office:spreadsheet»> <xsl:template match=»/»> <xsl:processing-instruction name=»mso-application»> <xsl:text>progid=»Excel.Sheet»</xsl:text> </xsl:processing-instruction> <Workbook> <Styles> <Style ss:ID=»Default» ss:Name=»Normal»> <Alignment ss:Vertical=»Bottom» /> <Borders /> <Font /> <Interior /> <NumberFormat /> <Protection /> </Style> </Styles> <Worksheet ss:Name=»Sheet 1″> <Table> <Row> <Cell> <Data ss:Type=»String»>Last Name</Data> </Cell> <Cell> <Data ss:Type=»String»>First Name</Data> </Cell> <Cell> <Data ss:Type=»String»>Qty</Data> </Cell> </Row> <xsl:apply-templates select=»//TestTable» /> <Row> <Cell></Cell> <Cell> <Data ss:Type=»String»>Total:</Data> </Cell> <Cell> <xsl:attribute name=»ss:Formula»>=SUM(RC:RC)</xsl:attribute> </Cell> </Row> </Table> </Worksheet> </Workbook> </xsl:template> <xsl:template match=»TestTable»> <Row> <Cell> <Data ss:Type=»String»> <xsl:value-of select=»LastName» /> </Data> </Cell> <Cell> <Data ss:Type=»String»> <xsl:value-of select=»FirstName» /> </Data> </Cell> <Cell> <Data ss:Type=»Number»> <xsl:value-of select=»Qty» /> </Data> </Cell> </Row> </xsl:template> </xsl:stylesheet> Далее напишем код, который будет осуществлять трансформацию XmlDocument xslDoc = new XmlDocument(); xslDoc.Load(Server.MapPath(«template.xslt»)); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(ds.GetXml()); XslTransform xslt = new XslTransform(); xslt.Load(xslDoc); using(StringWriter writer = new StringWriter()) { xslt.Transform(xmlDoc, null, writer, null); Response.Write(writer.ToString()); } Теперь давайте посмотрим на cтраничку целиком: <%@ Page Language=»c#» %> <%@ import Namespace=»System.IO» %> <%@ import Namespace=»System.Data» %> <%@ import Namespace=»System.Data.SqlClient» %> <%@ import Namespace=»System.Xml» %> <%@ import Namespace=»System.Xml.Xsl» %> <script runat=»server»> void Page_Load(object sender, EventArgs e) { Response.Clear(); Response.AddHeader(«Content-Disposition», «inline; filename=Report.xls»); Response.ContentType = «application/vnd.ms-excel»; DataSet ds = GetDataSet(); XmlDocument xslDoc = new XmlDocument(); xslDoc.Load(Server.MapPath(«template.xslt»)); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(ds.GetXml()); XslTransform xslt = new XslTransform(); xslt.Load(xslDoc); using(StringWriter writer = new StringWriter()) { xslt.Transform(xmlDoc, null, writer, null); Response.Write(writer.ToString()); } Response.End(); } DataSet GetDataSet() { string connStr = «server=localhost;database=pubs;trusted_connection=true»; using (SqlConnection connection = new SqlConnection(connStr)) { string sql = @» SELECT authors.au_lname AS LastName, authors.au_fname AS FirstName, SUM(sales.qty) AS Qty FROM titleauthor INNER JOIN authors ON titleauthor.au_id = authors.au_id INNER JOIN sales ON titleauthor.title_id = sales.title_id GROUP BY authors.au_lname, authors.au_fname ORDER BY SUM(sales.qty) DESC»; SqlCommand command = new SqlCommand(sql,connection); SqlDataAdapter adapter = new SqlDataAdapter(command); DataSet ds = new DataSet(«TestDataSet»); adapter.Fill(ds,»TestTable»); return ds; } } </script>

В результате запуска этой страницы мы должны увидеть, что то вроде этого:

Главная » Кадровику » Форма РМ рабочие места в 2019 году

Статью подготовила руководитель отдела подбора персонала Толмачёва Диана Глебовна. Связаться с автором


Вернуться назад на Рабочее место 2019

В территориальные органы статистики форма ПМ (квартальная) должна сдаваться по итогам квартала — до 29 числа месяца, следующего за соответствующим кварталом, теми юридическими лицами, которые:
• классифицируются как малые предприятия;
• попали в выборку Росстата.
К малым предприятиям относятся фирмы, в которых:
• работает от 15 до 100 человек (подп. «а» п. 2 ч. 1.1 ст. 4 закона «О развитии малого и среднего бизнеса» № 209-ФЗ);
• годовая выручка составляет до 800 млн. руб. (п. 1 постановления Правительства РФ № 265).
При этом фирма перестает считаться субъектом малого предпринимательства, если ее показатели будут фиксироваться в значениях ниже или выше указанных цифр в течение 3 лет подряд (п. 4 ст. 4 закона № 209-ФЗ).
Росстат собирает данные по малым бизнесам в рамках ежеквартальных выборочных наблюдений — формируя репрезентативные выборки предприятий (п. 3 ст. 5 закона № 209-ФЗ). Перечни фирм, попавших в выборку, обычно публикуются на сайтах территориальных представительств ведомства.
Для представления в статистику формы ПМ используется бланк, утвержденный приказом Росстата № 541. Документ должен оформляться в соответствии с общими указаниями по заполнению, утвержденными этим же приказом. Рассмотрим основные особенности заполнения формы ПМ в статистику по инструкции в 2019 году.
Рассматриваемая форма состоит из 3 разделов.
Раздел 1 — это анкета, в которой отражается факт применения/неприменения УСН.
В разделе 2 отражаются показатели по численности штата компании, а также по зарплате работников. Отчитывающаяся организация указывает в форме:
• сведения о списочном составе: качественные (в т. ч. выделяют обычных работников, внешних совместителей и внешних подрядчиков по контрактам) и количественные;
• размер фонда средней начисленной зарплаты с распределением его по основным 3 видам работников с дополнительным выделением других лиц несписочного состава;
• объем выплат социального характера также с разбивкой по основным 3 видам работников с дополнительным выделением других лиц несписочного состава;
• число часов, отработанных за отчетный период работниками списочного состава.

В разд. 3 формы отражаются основные хозяйственные показатели фирмы за период (без учета НДС, акцизов и иных обязательных перечислений):
• товаров, услуг и работ, самостоятельно произведенных компанией;
• проданных товаров, произведенных сторонними субъектами;
• продукции общепита, самостоятельно произведенной компанией;
• расходов на закупку продукции для перепродажи;
• инвестиций в новые и импортированные основные средства;
• внутренних расходов на исследования и технологические разработки;
• стоимость перепроданных объектов недвижимости и расходы на их приобретение.
В форму ПМ включаются показатели по всей фирме как юрлицу (то есть документ включает цифры, суммарно отражающие показатели по всем подразделениям).
Документ подписывается руководителем фирмы или ответственным сотрудником, имеющим полномочия на представление данных в Росстат. Соответствующими полномочиями человек может наделяться отдельным приказом руководства компании. Рядом с подписью указываются контактные данные ответственного лица.

Прописка 2019
Работник 2019
Работодатель 2019
Работы повышенной опасности 2019
Рабочее время 2019


| | Вверх

АО «Открытие Брокер», лицензия профессионального участника рынка ценных бумаг на осуществление брокерской деятельности № 045-06097-100000, выдана ФКЦБ России 28.06.2002 (без ограничения срока действия). С информацией об АО «Открытие Брокер» получатели финансовых услуг могут ознакомиться в разделе «Документы и раскрытие информации».

Информация о тарифных планах/тарифах опубликована в маркетинговых целях в сокращённом варианте. Полный перечень тарифных планов/тарифов, их содержание и условия применения содержатся на сайте open-broker.ru в приложении № 2 «Тарифы» к договору на брокерское обслуживание/договору на ведение индивидуального инвестиционного счёта АО «Открытие Брокер». Необходимо иметь это в виду при выборе тарифного плана.

Под «сервисом» понимается одно или несколько (совокупность) условий брокерского обслуживания клиентов, включая, но не ограничиваясь: открытие определённого портфеля, ведение отдельного инвестиционного счёта, предложение тарифного плана, предоставление клиенту информационных сообщений, а также иные условия, предусмотренные договором и/или Регламентом обслуживания клиентов АО «Открытие Брокер» и/или дополнительным соглашением с клиентом и/или размещённые на сайте АО «Открытие Брокер». Подробнее о каждом сервисе вы можете узнать на сайте компании, в личном кабинете или обратившись к сотруднику АО «Открытие Брокер».

Сервис дистанционного оформления предоставляется для первичного открытия счёта в компании.

Правообладатель программного обеспечения (ПО) MetaTrader 5 MetaQuotes SoftwareCorp.
Правообладатель программного обеспечения (ПО) QUIK ООО «АРКА Текнолоджиз».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *