📄 getters.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using System.IO;
using System.Data;
using System.Xml.Xsl;
using System.Xml;
using System.Xml.XPath;
namespace GeneratingMicrosoftWordReports.Reports
{
/// <summary>
/// Enables working with embedded XSDs, XSLTs, XMLs...
/// </summary>
internal class Getters
{
private static string _namespace = typeof(Getters).Namespace;
private static Assembly _assembly = Assembly.GetExecutingAssembly();
/// <summary>
/// XML schema as DataSet for easier data filling
/// </summary>
/// <param name="xsdName">Name of XML Schema</param>
/// <returns>DataSet representation of choosen XSD</returns>
public static DataSet GetXsdSchema(string xsdName)
{
using (Stream s = _assembly.GetManifestResourceStream(
string.Format("{0}.Xsd.{1}.xsd", _namespace, xsdName)))
{
DataSet dsToSet = new DataSet();
dsToSet.ReadXmlSchema(s);
return dsToSet;
}
}
/// <summary>
/// Method used for demonstrating Word Report creation - returns data in XML
/// </summary>
/// <param name="xmlName">Name of XML</param>
/// <returns>string containing XML</returns>
public static string GetTestXml(string xmlName)
{
using (StreamReader s = new StreamReader(_assembly.GetManifestResourceStream(
string.Format("{0}.Xml.{1}.xml", _namespace, xmlName)), Encoding.UTF8))
{
return s.ReadToEnd();
}
}
/// <summary>
/// Creates Word document from XML using XSLT
/// </summary>
/// <param name="xmlData">XML filled with data used in report</param>
/// <param name="xsltName">Name of XSLT embedded in resources</param>
/// <returns>Resulting Word document as Byte array</returns>
public static byte[] GetWord(string xmlData, string xsltName)
{
//Encoding.UTF8.GetBytes(
using (StringReader s = new StringReader(xmlData))
{
using (XmlReader dataReader = XmlReader.Create(s))
return GetWord(dataReader, xsltName);
}
}
/// <summary>
/// Creates Word document from XML using XSLT
/// </summary>
/// <param name="xmlData">Report data as XML</param>
/// <param name="nameOfXslt">Embedded XSLT transformation used for document creation</param>
/// <returns>Resulting Word document as Byte array</returns>
public static byte[] GetWord(XmlReader xmlData, string nameOfXslt)
{
// Get XSLT embedded in resources of assembly
Stream s = _assembly.GetManifestResourceStream(
string.Format("{0}.Xslt.{1}.xslt", _namespace, nameOfXslt));
using (XmlReader xsltReader = XmlReader.Create(s))
{
return GeneratingMicrosoftWordReports.Engine.Generation.GetWord(xmlData, xsltReader);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -