【寻求解决方案】将用户定单详细信息存到服务器的里面,调出打印 每个用户都有一个文件夹,现在需要把数据库里面的很多信息存到一个记事本或者Word文档里面,管理员可以从服务器雕出这个文件夹,然后打印出来;现在问题是如何用程序生成一个记事本或者Word文件???或者有更好的解决方案,大家可以告诉我!拜托了!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void SqlDataToExcel ( Page page, string strSql, string TableName, string ObjectName, string sqlconn ) { HttpResponse resp; string colHeaders = "", ls_item = ""; resp = page.Response; string filename = ObjectName+".word"; resp.ContentEncoding = System.Text.Encoding.GetEncoding ( "GB2312" ); resp.AppendHeader ( "Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8)); resp.ContentType = "text/word"; #region Excel DataSet ds = new DataSet ( ); SqlDataAdapter Adapter = new SqlDataAdapter ( strSql, sqlconn ); Adapter.Fill ( ds, TableName); int i, j; /*定义表对象与行对像,同时用DataSet对其值进行初始化*/ DataTable dt = ds.Tables[ 0 ]; DataRow[ ] myRow = dt.Select ( "" ); /*取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符*/ for (i = 0 ; i < dt.Columns.Count - 1 ; i++) colHeaders += dt.Columns[ i ].Caption.ToString ( ) + "\t"; colHeaders += dt.Columns[ i ].Caption.ToString ( ) + "\n"; /*向HTTP输出流中写入取得的数据信息*/ resp.Write ( colHeaders ); /*逐行处理数据*/ foreach (DataRow row in myRow) { //在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n for (i = 0 ; i < row.Table.Columns.Count - 1 ; i++) ls_item += row[ i ].ToString ( ) + "\t"; ls_item += row[ i ].ToString ( ) + "\n"; /*当前行数据写入HTTP输出流,并且置空ls_item以便下行数据*/ resp.Write ( ls_item ); ls_item = ""; } #endregion resp.Flush ( ); resp.End ( ); } /// <summary> /// SmartGridView类的属性部分 /// </summary> public partial class SmartGridView { /// <summary> /// 导出SmartGridView的数据源的数据 /// </summary> /// <param name="fileName">文件名</param> /// <param name="exportFormat">导出文件的格式</param> /// <param name="encoding">编码</param> public void Export(string fileName, ExportFormat exportFormat, Encoding encoding) { DataTable dt = null; if (this._dataSourceObject is DataTable) dt = (DataTable)this._dataSourceObject; else if (this._dataSourceObject is DataSet) dt = ((DataSet)this._dataSourceObject).Tables[0]; else throw new InvalidCastException("若要导出SmartGridView,应保证其数据源为DataTable或DataSet类型"); if (dt == null) throw new ArgumentNullException("数据源", "数据源不能为NULL"); Helper.Common.Export(dt, exportFormat, fileName, encoding); } /// <summary> /// 导出SmartGridView的数据源的数据 /// </summary> /// <param name="fileName">文件名</param> /// <param name="exportFormat">导出文件的格式</param> public void Export(string fileName, ExportFormat exportFormat) { Export(fileName, exportFormat, Encoding.GetEncoding("GB2312")); } /// <summary> /// 导出SmartGridView的数据源的数据为Excel /// </summary> /// <param name="fileName">文件名</param> public void Export(string fileName) { Export(fileName, ExportFormat.CSV); } 这样的话,需要用户注册的时候系统直接在文件夹下生成一个记事本或者word文件???然后再加内容??怎么生成??? using System;using System.Collections.Generic;using System.Text;using System.Xml;using System.Xml.Xsl;using System.Web;using System.Data;using System.IO;namespace YYControls.Helper{ /// <summary> /// 常用Helper /// </summary> public partial class Common { /// <summary> /// 导出为Excel /// </summary> /// <param name="dt">数据源</param> /// <param name="exportFormat">导出文件的格式</param> /// <param name="fileName">输出文件名</param> /// <param name="encoding">编码</param> public static void Export(DataTable dt, ExportFormat exportFormat, string fileName, Encoding encoding) { DataSet dsExport = new DataSet("Export"); DataTable dtExport = dt.Copy(); dtExport.TableName = "Values"; dsExport.Tables.Add(dtExport); string[] headers = new string[dtExport.Columns.Count]; string[] fields = new string[dtExport.Columns.Count]; for (int i = 0; i < dtExport.Columns.Count; i++) { headers[i] = dtExport.Columns[i].ColumnName; fields[i] = ReplaceSpecialChars(dtExport.Columns[i].ColumnName); } Export(dsExport, headers, fields, exportFormat, fileName, encoding); } /// <summary> /// 导出为Excel /// </summary> /// <param name="dt">数据源</param> /// <param name="columnIndexList">列索引集合</param> /// <param name="exportFormat">导出文件的格式</param> /// <param name="fileName">输出文件名</param> /// <param name="encoding">编码</param> public static void Export(DataTable dt, int[] columnIndexList, ExportFormat exportFormat, string fileName, Encoding encoding) { DataSet dsExport = new DataSet("Export"); DataTable dtExport = dt.Copy(); dtExport.TableName = "Values"; dsExport.Tables.Add(dtExport); string[] headers = new string[columnIndexList.Length]; string[] fields = new string[columnIndexList.Length]; for (int i = 0; i < columnIndexList.Length; i++) { headers[i] = dtExport.Columns[columnIndexList[i]].ColumnName; fields[i] = ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName); } Export(dsExport, headers, fields, exportFormat, fileName, encoding); } /// <summary> /// 导出为Excel /// </summary> /// <param name="dt">数据源</param> /// <param name="columnIndexList">列索引集合</param> /// <param name="headers">字段数组</param> /// <param name="exportFormat">导出文件的格式</param> /// <param name="fileName">输出文件名</param> /// <param name="encoding">编码</param> public static void Export(DataTable dt, int[] columnIndexList, string[] headers, ExportFormat exportFormat, string fileName, Encoding encoding) { DataSet dsExport = new DataSet("Export"); DataTable dtExport = dt.Copy(); dtExport.TableName = "Values"; dsExport.Tables.Add(dtExport); string[] fields = new string[columnIndexList.Length]; for (int i = 0; i < columnIndexList.Length; i++) { fields[i] = ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName); } Export(dsExport, headers, fields, exportFormat, fileName, encoding); } /// <summary> /// 导出为Excel /// </summary> /// <param name="ds">数据源</param> /// <param name="headers">表头数组</param> /// <param name="fields">字段数组</param> /// <param name="exportFormat">导出文件的格式</param> /// <param name="fileName">输出文件名</param> /// <param name="encoding">编码</param> private static void Export(DataSet ds, string[] headers, string[] fields, ExportFormat exportFormat, string fileName, Encoding encoding) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ContentType = String.Format("text/{0}", exportFormat.ToString().ToLower()); HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.{1}", fileName, exportFormat.ToString().ToLower())); HttpContext.Current.Response.ContentEncoding = encoding; MemoryStream stream = new MemoryStream(); XmlTextWriter writer = new XmlTextWriter(stream, encoding); CreateStylesheet(writer, headers, fields, exportFormat); writer.Flush(); stream.Seek(0, SeekOrigin.Begin); XmlDataDocument xmlDoc = new XmlDataDocument(ds); XslCompiledTransform xslTran = new XslCompiledTransform(); xslTran.Load(new XmlTextReader(stream)); System.IO.StringWriter sw = new System.IO.StringWriter(); xslTran.Transform(xmlDoc, null, sw); HttpContext.Current.Response.Write(sw.ToString()); sw.Close(); writer.Close(); stream.Close(); HttpContext.Current.Response.End(); } /// <summary> /// 动态生成XSL,并写入XML流 /// </summary> /// <param name="writer">XML流</param> /// <param name="headers">表头数组</param> /// <param name="fields">字段数组</param> /// <param name="exportFormat">导出文件的格式</param> private static void CreateStylesheet(XmlTextWriter writer, string[] headers, string[] fields, ExportFormat exportFormat) { string ns = "http://www.w3.org/1999/XSL/Transform"; writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteStartElement("xsl", "stylesheet", ns); writer.WriteAttributeString("version", "1.0"); writer.WriteStartElement("xsl:output"); writer.WriteAttributeString("method", "text"); writer.WriteAttributeString("version", "4.0"); writer.WriteEndElement(); // xsl-template writer.WriteStartElement("xsl:template"); writer.WriteAttributeString("match", "/"); // xsl:value-of for headers for (int i = 0; i < headers.Length; i++) { writer.WriteString("\""); writer.WriteStartElement("xsl:value-of"); writer.WriteAttributeString("select", "'" + headers[i] + "'"); writer.WriteEndElement(); // xsl:value-of writer.WriteString("\""); if (i != fields.Length - 1) writer.WriteString((exportFormat == ExportFormat.CSV) ? "," : " "); } // xsl:for-each writer.WriteStartElement("xsl:for-each"); writer.WriteAttributeString("select", "Export/Values"); writer.WriteString("\r\n"); // xsl:value-of for data fields for (int i = 0; i < fields.Length; i++) { writer.WriteString("\""); writer.WriteStartElement("xsl:value-of"); writer.WriteAttributeString("select", fields[i]); writer.WriteEndElement(); // xsl:value-of writer.WriteString("\""); if (i != fields.Length - 1) writer.WriteString((exportFormat == ExportFormat.CSV) ? "," : " "); } writer.WriteEndElement(); // xsl:for-each writer.WriteEndElement(); // xsl-template writer.WriteEndElement(); // xsl:stylesheet } }} 原理都是从数据库中导出相应的数据到dataset,再用流保存成word 控制TreeView的收展 这是什么原因?提示为:分析器错误消息: 服务器标记的格式不正确。 不用JS,如何获取客户端IP和计算机名? asp.net 中的 中文字符转换 一道关于 Session 问题,在线等!!! 为什么dropdownlist的selectedIndex无法赋值 关于progstudios的combobox控件的难题,高手帮忙! 请教asp.net 专家 请问我这下XML格式 强制关机后,vs2008 浏览 异常:HRESULT:0x80070057 (E_INVALIDARG 关于结构的集合的帮定 帮帮忙 急 在线等 谢谢 求水晶报表打印和输出的源代码,急!谢谢!
{
HttpResponse resp;
string colHeaders = "", ls_item = "";
resp = page.Response;
string filename = ObjectName+".word";
resp.ContentEncoding = System.Text.Encoding.GetEncoding ( "GB2312" );
resp.AppendHeader ( "Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(filename,System.Text.Encoding.UTF8));
resp.ContentType = "text/word"; #region Excel
DataSet ds = new DataSet ( );
SqlDataAdapter Adapter = new SqlDataAdapter ( strSql, sqlconn );
Adapter.Fill ( ds, TableName);
int i, j;
/*定义表对象与行对像,同时用DataSet对其值进行初始化*/
DataTable dt = ds.Tables[ 0 ];
DataRow[ ] myRow = dt.Select ( "" );
/*取得数据表各列标题,各标题之间以\t分割,最后一个列标题后加回车符*/
for (i = 0 ; i < dt.Columns.Count - 1 ; i++)
colHeaders += dt.Columns[ i ].Caption.ToString ( ) + "\t";
colHeaders += dt.Columns[ i ].Caption.ToString ( ) + "\n";
/*向HTTP输出流中写入取得的数据信息*/
resp.Write ( colHeaders );
/*逐行处理数据*/
foreach (DataRow row in myRow)
{
//在当前行中,逐列获得数据,数据之间以\t分割,结束时加回车符\n
for (i = 0 ; i < row.Table.Columns.Count - 1 ; i++)
ls_item += row[ i ].ToString ( ) + "\t";
ls_item += row[ i ].ToString ( ) + "\n";
/*当前行数据写入HTTP输出流,并且置空ls_item以便下行数据*/
resp.Write ( ls_item );
ls_item = "";
}
#endregion
resp.Flush ( );
resp.End ( );
}
/// SmartGridView类的属性部分
/// </summary>
public partial class SmartGridView
{
/// <summary>
/// 导出SmartGridView的数据源的数据
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="exportFormat">导出文件的格式</param>
/// <param name="encoding">编码</param>
public void Export(string fileName, ExportFormat exportFormat, Encoding encoding)
{
DataTable dt = null; if (this._dataSourceObject is DataTable)
dt = (DataTable)this._dataSourceObject;
else if (this._dataSourceObject is DataSet)
dt = ((DataSet)this._dataSourceObject).Tables[0];
else
throw new InvalidCastException("若要导出SmartGridView,应保证其数据源为DataTable或DataSet类型"); if (dt == null)
throw new ArgumentNullException("数据源", "数据源不能为NULL"); Helper.Common.Export(dt, exportFormat, fileName, encoding);
} /// <summary>
/// 导出SmartGridView的数据源的数据
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="exportFormat">导出文件的格式</param>
public void Export(string fileName, ExportFormat exportFormat)
{
Export(fileName, exportFormat, Encoding.GetEncoding("GB2312"));
} /// <summary>
/// 导出SmartGridView的数据源的数据为Excel
/// </summary>
/// <param name="fileName">文件名</param>
public void Export(string fileName)
{
Export(fileName, ExportFormat.CSV);
}
using System.Collections.Generic;
using System.Text;using System.Xml;
using System.Xml.Xsl;
using System.Web;
using System.Data;
using System.IO;namespace YYControls.Helper
{
/// <summary>
/// 常用Helper
/// </summary>
public partial class Common
{
/// <summary>
/// 导出为Excel
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="exportFormat">导出文件的格式</param>
/// <param name="fileName">输出文件名</param>
/// <param name="encoding">编码</param>
public static void Export(DataTable dt, ExportFormat exportFormat, string fileName, Encoding encoding)
{
DataSet dsExport = new DataSet("Export");
DataTable dtExport = dt.Copy(); dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport); string[] headers = new string[dtExport.Columns.Count];
string[] fields = new string[dtExport.Columns.Count]; for (int i = 0; i < dtExport.Columns.Count; i++)
{
headers[i] = dtExport.Columns[i].ColumnName;
fields[i] = ReplaceSpecialChars(dtExport.Columns[i].ColumnName);
} Export(dsExport, headers, fields, exportFormat, fileName, encoding);
} /// <summary>
/// 导出为Excel
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="columnIndexList">列索引集合</param>
/// <param name="exportFormat">导出文件的格式</param>
/// <param name="fileName">输出文件名</param>
/// <param name="encoding">编码</param>
public static void Export(DataTable dt, int[] columnIndexList, ExportFormat exportFormat, string fileName, Encoding encoding)
{
DataSet dsExport = new DataSet("Export");
DataTable dtExport = dt.Copy(); dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport); string[] headers = new string[columnIndexList.Length];
string[] fields = new string[columnIndexList.Length]; for (int i = 0; i < columnIndexList.Length; i++)
{
headers[i] = dtExport.Columns[columnIndexList[i]].ColumnName;
fields[i] = ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName);
} Export(dsExport, headers, fields, exportFormat, fileName, encoding);
} /// <summary>
/// 导出为Excel
/// </summary>
/// <param name="dt">数据源</param>
/// <param name="columnIndexList">列索引集合</param>
/// <param name="headers">字段数组</param>
/// <param name="exportFormat">导出文件的格式</param>
/// <param name="fileName">输出文件名</param>
/// <param name="encoding">编码</param>
public static void Export(DataTable dt, int[] columnIndexList, string[] headers, ExportFormat exportFormat, string fileName, Encoding encoding)
{
DataSet dsExport = new DataSet("Export");
DataTable dtExport = dt.Copy(); dtExport.TableName = "Values";
dsExport.Tables.Add(dtExport); string[] fields = new string[columnIndexList.Length]; for (int i = 0; i < columnIndexList.Length; i++)
{
fields[i] = ReplaceSpecialChars(dtExport.Columns[columnIndexList[i]].ColumnName);
} Export(dsExport, headers, fields, exportFormat, fileName, encoding);
} /// <summary>
/// 导出为Excel
/// </summary>
/// <param name="ds">数据源</param>
/// <param name="headers">表头数组</param>
/// <param name="fields">字段数组</param>
/// <param name="exportFormat">导出文件的格式</param>
/// <param name="fileName">输出文件名</param>
/// <param name="encoding">编码</param>
private static void Export(DataSet ds, string[] headers, string[] fields, ExportFormat exportFormat, string fileName, Encoding encoding)
{
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.Buffer = true;
HttpContext.Current.Response.ContentType = String.Format("text/{0}", exportFormat.ToString().ToLower());
HttpContext.Current.Response.AddHeader("content-disposition", String.Format("attachment;filename={0}.{1}", fileName, exportFormat.ToString().ToLower()));
HttpContext.Current.Response.ContentEncoding = encoding; MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, encoding); CreateStylesheet(writer, headers, fields, exportFormat);
writer.Flush();
stream.Seek(0, SeekOrigin.Begin); XmlDataDocument xmlDoc = new XmlDataDocument(ds);
XslCompiledTransform xslTran = new XslCompiledTransform();
xslTran.Load(new XmlTextReader(stream)); System.IO.StringWriter sw = new System.IO.StringWriter();
xslTran.Transform(xmlDoc, null, sw); HttpContext.Current.Response.Write(sw.ToString());
sw.Close();
writer.Close();
stream.Close();
HttpContext.Current.Response.End();
} /// <summary>
/// 动态生成XSL,并写入XML流
/// </summary>
/// <param name="writer">XML流</param>
/// <param name="headers">表头数组</param>
/// <param name="fields">字段数组</param>
/// <param name="exportFormat">导出文件的格式</param>
private static void CreateStylesheet(XmlTextWriter writer, string[] headers, string[] fields, ExportFormat exportFormat)
{
string ns = "http://www.w3.org/1999/XSL/Transform";
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument();
writer.WriteStartElement("xsl", "stylesheet", ns);
writer.WriteAttributeString("version", "1.0");
writer.WriteStartElement("xsl:output");
writer.WriteAttributeString("method", "text");
writer.WriteAttributeString("version", "4.0");
writer.WriteEndElement(); // xsl-template
writer.WriteStartElement("xsl:template");
writer.WriteAttributeString("match", "/"); // xsl:value-of for headers
for (int i = 0; i < headers.Length; i++)
{
writer.WriteString("\"");
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", "'" + headers[i] + "'");
writer.WriteEndElement(); // xsl:value-of
writer.WriteString("\"");
if (i != fields.Length - 1) writer.WriteString((exportFormat == ExportFormat.CSV) ? "," : " ");
} // xsl:for-each
writer.WriteStartElement("xsl:for-each");
writer.WriteAttributeString("select", "Export/Values");
writer.WriteString("\r\n"); // xsl:value-of for data fields
for (int i = 0; i < fields.Length; i++)
{
writer.WriteString("\"");
writer.WriteStartElement("xsl:value-of");
writer.WriteAttributeString("select", fields[i]);
writer.WriteEndElement(); // xsl:value-of
writer.WriteString("\"");
if (i != fields.Length - 1) writer.WriteString((exportFormat == ExportFormat.CSV) ? "," : " ");
} writer.WriteEndElement(); // xsl:for-each
writer.WriteEndElement(); // xsl-template
writer.WriteEndElement(); // xsl:stylesheet
}
}
}