每个用户都有一个文件夹,现在需要把数据库里面的很多信息存到一个记事本或者Word文档里面,管理员可以从服务器雕出这个文件夹,然后打印出来;
现在问题是如何用程序生成一个记事本或者Word文件???
或者有更好的解决方案,大家可以告诉我!
拜托了!!

解决方案 »

  1.   

    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 ( );
        }
      

  2.   

    /// <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);
            }
      

  3.   

    这样的话,需要用户注册的时候系统直接在文件夹下生成一个记事本或者word文件???然后再加内容??怎么生成???
      

  4.   

    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
            }
        }
    }
      

  5.   

    原理都是从数据库中导出相应的数据到dataset,再用流保存成word