从数据库导出数据到word、excel、.txt- -

    技术2022-05-11  84

    从数据库导出数据到word、excel、.txt -   - Tag: 导入    word    .doc、.txt、excel    .xls                                           以下是我最近写的一些关于从数据库导出数据到word、excel、.txt文本文件的代码我也是初次写这方面的东西,写的不好还请大家批评指正! using  System; using  System.Data; using  System.Drawing; using  System.Data.SqlClient; using  Excel; using  Word; using  System.IO; namespace  Common /// <summary> /// 把数据导入到.doc、.txt、.xls文件中 /// </summary> public class Export {  private const string DATAWORDPATH = @"C: olderdocdatadoc";  private const string IMAGEWORDPATH = @"C: olderdocimagedoc";  private const string IMAGEPATH = @"C: olderimage";  private const string EXCELPATH = @"C: olderexcel";  private const string TXTPATH = @"C: older xt";  private const string IMAGEPOSTFIX = ".bmp";  private const string WORDPOSTFIX = ".doc";  private const string EXCELPOSTFIX = ".xls";  private const string TXTPOSTFIX = ".txt";  private const int DATADISTANCE = 5;  private const int TABDISTANCE = 8;    public Export()  {   //   // TODO: 在此处添加构造函数逻辑   //  }  /// <summary>  /// 获得数据集Dataset--------------------------------用于调试  /// </summary>  /// <returns>Dataset</returns>  public DataSet GetData()  {   try   {    string sConnectionString;    sConnectionString = "workstation id=GUOFU;packet size=4096;user id=sa;data source=GUOFU;persist security info=True;initial catalog=YC;password=sc";    SqlConnection objConn = new SqlConnection(sConnectionString);    objConn.Open();                                                SqlDataAdapter daPoint = new SqlDataAdapter("Select * From Point", objConn);    DataSet dsYC = new DataSet("YC");    daPoint.FillSchema(dsYC,SchemaType.Mapped, "Point");    daPoint.Fill(dsYC,"Point");    daPoint = new SqlDataAdapter("Select * From Employee", objConn);    daPoint.FillSchema(dsYC,SchemaType.Mapped, "Employee");    daPoint.Fill(dsYC,"Employee");    return dsYC;   }   catch(Exception ex)   {     throw new Exception(ex.Message);   }  }  /// <summary>  /// 把数据文件导入到.xls文件  /// </summary>  /// <param name="ds"></param>  public void ExportToExcel(DataSet ds)  {   if(ds.Tables.Count!=0)   {    //生成.xls文件完整路径名    string tempFileName = GetTempFileName();    object filename = EXCELPATH+tempFileName+EXCELPOSTFIX;    object Nothing = System.Reflection.Missing.Value;        //创建excel文件,文件名用系统时间生成精确到毫秒    Excel.Application myExcel = new Excel.ApplicationClass();    myExcel.Application.Workbooks.Add(Nothing);    try    {     //把Dataset中的数据插入excel文件中     int totalCount = 0;     for(int k =0;k<ds.Tables.Count;k++)     {      int row = ds.Tables[k].Rows.Count;      int column = ds.Tables[k].Columns.Count;          for(int i = 0;i<column;i++)      {       myExcel.Cells[totalCount+2,1+i] = ds.Tables[k].Columns[i].ColumnName;      }      for(int i = 0;i<row;i++)      {       for(int j =0;j<column;j++)       {        myExcel.Cells[totalCount+3+i,1+j] = "'" + ds.Tables[k].Rows[i][j].ToString();       }      }      totalCount = totalCount + row +4;     }     try     {      //保存excel文件到指定的目录下,文件名用系统时间生成精确到毫秒      myExcel.ActiveWorkbook._SaveAs(filename,Nothing,Nothing,Nothing,Nothing,Nothing,XlSaveAsAccessMode.xlExclusive,Nothing,Nothing,Nothing,Nothing);     }     catch     {      System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+EXCELPATH+tempFileName+EXCELPOSTFIX);      return;     }     //让生成的excel文件可见     myExcel.Visible = true;    }    catch(Exception e)    {     System.Windows.Forms.MessageBox.Show("向excel文件中写入数据出错:  " + e.Message);    }   }   else   {    System.Windows.Forms.MessageBox.Show("No Data");   }  }  /// <summary>  /// 把数据导入到.doc文件  /// </summary>  /// <param name="ds"></param>  public void ExportToWord(DataSet ds)  {   if(ds.Tables.Count!=0)   {       string tempFileName = null;    object filename = null;        object tableBehavior = Word.WdDefaultTableBehavior.wdWord9TableBehavior;    object autoFitBehavior = Word.WdAutoFitBehavior.wdAutoFitFixed;    object unit = Word.WdUnits.wdStory;    object extend = System.Reflection.Missing.Value;    object breakType = (int)Word.WdBreakType.wdSectionBreakNextPage;    object count = 1;    object character = Word.WdUnits.wdCharacter;    object Nothing =  System.Reflection.Missing.Value;        try    {     tempFileName = GetTempFileName();     //生成.doc文件完整路径名     filename = DATAWORDPATH+tempFileName+WORDPOSTFIX;          //创建一个word文件,文件名用系统时间生成精确到毫秒     Word.Application myWord= new Word.ApplicationClass();     Word._Document myDoc = new Word.DocumentClass();     myDoc = myWord.Documents.Add(ref Nothing,ref Nothing,ref Nothing,ref Nothing);      myDoc.Activate();     //向把dataset中的表插入到word的文件中         for(int totalTable = 0;totalTable<ds.Tables.Count;totalTable++)     {      myWord.Application.Selection.TypeText(ds.Tables[totalTable].TableName+"表的数据如下");      myWord.Application.Selection.TypeParagraph();           myWord.Application.Selection.TypeParagraph();      Word.Range para = myWord.Application.Selection.Range;      myDoc.Tables.Add(para,ds.Tables[totalTable].Rows.Count+1,ds.Tables[totalTable].Columns.Count,ref tableBehavior,ref autoFitBehavior);      for(int column = 0; column<ds.Tables[totalTable].Columns.Count;column++)      {       myDoc.Tables.Item(totalTable+1).Cell(1,column+1).Range.InsertBefore(ds.Tables[0].Columns[column].ColumnName.Trim());      }          for(int row = 0;row<ds.Tables[totalTable].Rows.Count;row++)      {       for(int column = 0;column<ds.Tables[totalTable].Columns.Count;column++)       {        myDoc.Tables.Item(totalTable+1).Cell(row+2,column+1).Range.InsertBefore(ds.Tables[totalTable].Rows[row][column].ToString().Trim());       }      }      myWord.Application.Selection.EndKey(ref unit,ref extend);      myWord.Application.Selection.TypeParagraph();      myWord.Application.Selection.TypeParagraph();      myWord.Application.Selection.InsertBreak(ref breakType);         }     myWord.Application.Selection.TypeBackspace();     myWord.Application.Selection.Delete(ref character,ref count);     myWord.Application.Selection.HomeKey(ref unit,ref extend);         //保存word文件到指定的目录下     try     {      myDoc.SaveAs(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);      myWord.Visible = true;     }     catch     {      System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+DATAWORDPATH+tempFileName+WORDPOSTFIX);      return;     }     //让生成的excel文件可见     myWord.Visible = true;    }    catch(Exception ex)    {     System.Windows.Forms.MessageBox.Show("向word文件中写入数据出错:  " + ex.Message);    }   }   else   {    System.Windows.Forms.MessageBox.Show("No Data");   }  }  /// <summary>  /// 把图片文件导入到.doc文件  /// </summary>  /// <param name="bp"></param>  public void ExportToWord(Bitmap bp)  {   string tempFileName = null;   string bmpPath = null;   object filename = null;   object Nothing = null;   tempFileName = GetTempFileName();    //生成.bmp文件完整路径名   bmpPath = IMAGEPATH+tempFileName+IMAGEPOSTFIX;   //生成.doc文件完整路径名   filename = IMAGEWORDPATH+tempFileName+WORDPOSTFIX;   Nothing = System.Reflection.Missing.Value;    //创建一个word文件,文件名用系统时间生成精确到毫秒   Word.Application myWord= new Word.ApplicationClass();   Word._Document myDoc = new Word.DocumentClass();   myDoc = myWord.Documents.Add(ref Nothing,ref Nothing,ref Nothing,ref Nothing);     try   {    //把bitmap对象保存到系统所生成文件完整路径中    bp.Save(bmpPath);   }   catch   {    System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+bmpPath);    return;   }     try   {    //往word文件中插入图片    myDoc.InlineShapes.AddPicture(bmpPath,ref Nothing,ref Nothing,ref Nothing);   }   catch   {    System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+bmpPath);    return;   }     try   {    //保存word文件到指定的目录下    myDoc.SaveAs(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);   }   catch   {    System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+IMAGEWORDPATH+tempFileName+WORDPOSTFIX);    return;   }   //让生成的word文件可见   myWord.Visible = true;  }  /// <summary>  /// 把数据文件导入到.txt文件  /// </summary>  /// <param name="ds"></param>  public void ExportToTxt(DataSet ds)  {   if(ds.Tables.Count!=0)   {    string tempFileName = null;    tempFileName = GetTempFileName();      //创建一个.txt文件,文件名用系统时间生成精确到毫秒    FileInfo file = new FileInfo(TXTPATH+tempFileName+TXTPOSTFIX);    StreamWriter textFile = null;    try    {     textFile = file.CreateText();    }    catch    {     System.Windows.Forms.MessageBox.Show("系统找不到指定目录下的文件:  "+TXTPATH+tempFileName+TXTPOSTFIX);     return;    }     //把Dataset中的数据写入.txt文件中    for(int totaltable = 0;totaltable<ds.Tables.Count;totaltable++)    {     //统计dataset中当前表的行数     int row = ds.Tables[totaltable].Rows.Count;     //统计dataset中当前表的列数     int column = ds.Tables[totaltable].Columns.Count;     //用于统计当前表中每列记录中字符数最长的字符串的长度之和     int totalLength = 0;     //用于统计标题的长度(dataset中的表名的length+"表的数据如下"的length)     int titleLength = 0;     //统计每列记录中字符数最长的字符串的长度     int[] columnLength = new int[column];     for(int i = 0;i<column;i++)     {      columnLength[i] = ds.Tables[totaltable].Columns[i].ColumnName.ToString().Length;     }     for(int i = 0;i<row;i++)     {      for(int j = 0;j<column;j++)      {       if(ds.Tables[totaltable].Rows[i][j].ToString().Length>columnLength[j])       {        columnLength[j]=ds.Tables[totaltable].Rows[i][j].ToString().Length;       }      }     }     //统计当前表中每列记录中字符数最长的字符串的长度之和     for(int i = 0;i<column;i++)     {      totalLength = totalLength+columnLength[i]+DATADISTANCE;     }     totalLength = totalLength+2*TABDISTANCE-DATADISTANCE;     //统计标题的长度(dataset中的当前表名的length+"表的数据如下"的length)     titleLength = ds.Tables[totaltable].TableName.ToString().Length+"表的数据如下".Length*2;     //把标题写入.txt文件中     for(int i = 0;i<(int)((totalLength-titleLength)/2);i++)     {      textFile.Write(' ');     }     textFile.Write(ds.Tables[totaltable].TableName+"表的数据如下");     textFile.WriteLine();     for(int i = 0;i<totalLength;i++)     {      textFile.Write('*');     }     textFile.WriteLine();     textFile.Write(" ");     //把dataset中当前表的字段名写入.txt文件中     for(int i = 0;i<column;i++)     {      textFile.Write(ds.Tables[totaltable].Columns[i].ColumnName.ToString());      for(int k = 0;k<columnLength[i]-ds.Tables[totaltable].Columns[i].ColumnName.ToString().Length+DATADISTANCE;k++)      {       textFile.Write(' ');      }     }     textFile.WriteLine();     for(int i = 0;i<totalLength;i++)     {      textFile.Write('-');     }     textFile.WriteLine();     textFile.Write(" ");     //把dataset中当前表的数据写入.txt文件中     for(int i = 0;i<row;i++)     {      for(int j = 0;j<column;j++)      {       textFile.Write(ds.Tables[totaltable].Rows[i][j].ToString());       for(int k = 0;k<columnLength[j]-ds.Tables[totaltable].Rows[i][j].ToString().Length+DATADISTANCE;k++)       {        textFile.Write(' ');       }      }      textFile.WriteLine();      textFile.Write(" ");     }     textFile.WriteLine();     for(int i = 0;i<totalLength;i++)     {      textFile.Write('-');     }     textFile.WriteLine();     textFile.WriteLine();     textFile.WriteLine();    }    //关闭当前的StreamWriter流    textFile.Close();    System.Windows.Forms.MessageBox.Show("数据文件已保存到"+"   "+file.FullName);                    }   else   {    System.Windows.Forms.MessageBox.Show("No Data");   }  }  public string GetTempFileName()  {   return DateTime.Now.ToString("yyyyMMddhhmmssfff");  } }}  

    最新回复(0)