将如上效果导入到Excel中,效果如:
原理:先将数据按照你想要的表格效果做成DataTable,然后在导入到Excel中
做成DataTable的方法:
Code
InBlock.gif 1                   //导出Excel课表信息
InBlock.gif 2                 private void button5_Click( object sender, EventArgs e)
InBlock.gif 3                 {
InBlock.gif 4                         DataTable dt = new DataTable();
InBlock.gif 5                         dt.TableName = "班级:" + treeView1.Nodes[0].Text + treeView1.Nodes[0].Nodes[0].Text + "年" + treeView1.Nodes[0].Nodes[0].Nodes[0].Text + "课程表";
InBlock.gif 6                         dt.Columns.Add( "时间段", typeof ( string));
InBlock.gif 7                         dt.Columns.Add( "星期一", typeof( string));
InBlock.gif 8                         dt.Columns.Add( "星期二", typeof( string));
InBlock.gif 9                         dt.Columns.Add( "星期三", typeof( string));
InBlock.gif10                         dt.Columns.Add( "星期四", typeof( string));
InBlock.gif11                         dt.Columns.Add( "星期五", typeof( string));
InBlock.gif12                         DataRow r0 = dt.NewRow();
InBlock.gif13                         r0[ "时间段"] = "时间段";
InBlock.gif14                         r0[ "星期一"] = "星期一";
InBlock.gif15                         r0[ "星期二"] = "星期二";
InBlock.gif16                         r0[ "星期三"] = "星期三";
InBlock.gif17                         r0[ "星期四"] = "星期四";
InBlock.gif18                         r0[ "星期五"] = "星期五";
InBlock.gif19                         dt.Rows.Add(r0);
InBlock.gif20                         DataRow r1 = dt.NewRow();
InBlock.gif21                         r1[ "时间段"] = "08:00-10:00";
InBlock.gif22                         dt.Rows.Add(r1);
InBlock.gif23                         DataRow r2 = dt.NewRow();
InBlock.gif24                         r2[ "时间段"] = "10:00-12:00";
InBlock.gif25                         dt.Rows.Add(r2);
InBlock.gif26                         DataRow r3 = dt.NewRow();
InBlock.gif27                         r3[ "时间段"] = "14:00-16:00";
InBlock.gif28                         dt.Rows.Add(r3);
InBlock.gif29                         DataRow r4 = dt.NewRow();
InBlock.gif30                         r4[ "时间段"] = "16:00-18:00";
InBlock.gif31                         dt.Rows.Add(r4);
InBlock.gif32                         for ( int j = 1; j <= 5; j++)
InBlock.gif33                         {
InBlock.gif34                                 for ( int i = 0; i < treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Count; i++) //遍历星期
InBlock.gif35                                 {
InBlock.gif36                                         if (treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Text.Trim() == dt.Columns[j].ColumnName) //找到星期相等的
InBlock.gif37                                         {
InBlock.gif38                                                 string s=treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Nodes [0].Text.Trim (); //找到时间段和科目
InBlock.gif39                                                 string time=s.Substring (0,s.IndexOf ( "|")); //变量科目
InBlock.gif40                                                 string km=s.Substring (s.IndexOf ( "|")+1);
InBlock.gif41                                                 for ( int z = 1; z <= 4; z++)
InBlock.gif42                                                 {
InBlock.gif43                                                         string sj = dt.Rows[z][0].ToString();
InBlock.gif44                                                         if (time.Trim() == sj)
InBlock.gif45                                                         {
InBlock.gif46                                                                 dt.Rows[z][j] = km;
InBlock.gif47                                                         }
InBlock.gif48                                                 }
InBlock.gif49                                         }
InBlock.gif50    
InBlock.gif51                                 }
InBlock.gif52                         }
InBlock.gif53                         DGVToExcel ds = new DGVToExcel(); //导入到Excel中
InBlock.gif54                                ds.SaveAs(dt);
InBlock.gif55    
InBlock.gif56                 }
InBlock.gif57
         
第53行为导入到Excel的公共类,SaveAS是导入的具体方法
Code
InBlock.gif 1 using System;
InBlock.gif 2 using System.Collections.Generic;
InBlock.gif 3 using System.ComponentModel;
InBlock.gif 4 using System.Data;
InBlock.gif 5 using System.Drawing;
InBlock.gif 6 using System.Text;
InBlock.gif 7 using System.Windows.Forms;
InBlock.gif 8 using System.IO;
InBlock.gif 9    
InBlock.gif10 namespace 教务管理系统
InBlock.gif11 {
InBlock.gif12         class DGVToExcel
InBlock.gif13         {
InBlock.gif14                 public void SaveAs(DataTable dt) //另存新档按钮     导出成Excel
InBlock.gif15                 {
InBlock.gif16                         try
InBlock.gif17                         {
InBlock.gif18                                 SaveFileDialog saveFileDialog = new SaveFileDialog();
InBlock.gif19                                 saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
InBlock.gif20                                 saveFileDialog.FilterIndex = 0;
InBlock.gif21                                 saveFileDialog.RestoreDirectory = true;
InBlock.gif22                                 saveFileDialog.CreatePrompt = true;
InBlock.gif23                                 saveFileDialog.Title = "导出Excel到";
InBlock.gif24                                 if(saveFileDialog.ShowDialog()==DialogResult.OK)
InBlock.gif25                                 {
InBlock.gif26                                 Stream myStream;
InBlock.gif27                                 myStream = saveFileDialog.OpenFile();
InBlock.gif28                                 StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
InBlock.gif29                                 string str = "";
InBlock.gif30                                 try
InBlock.gif31                                 {
InBlock.gif32                                         //写标题
InBlock.gif33                                        
InBlock.gif34                                                 str +=dt.TableName;
InBlock.gif35                                         sw.WriteLine(str);
InBlock.gif36                                         //写内容
InBlock.gif37                                         for ( int j = 0; j < dt.Rows.Count; j++)
InBlock.gif38                                         {
InBlock.gif39                                                 string tempStr = "";
InBlock.gif40                                                 for ( int k = 0; k < dt.Columns.Count; k++)
InBlock.gif41                                                 {
InBlock.gif42                                                         if (k > 0)
InBlock.gif43                                                         {
InBlock.gif44                                                                 tempStr += "\t";
InBlock.gif45                                                         }
InBlock.gif46                                                         tempStr += dt.Rows[j][k].ToString();
InBlock.gif47                                                 }
InBlock.gif48                                                 sw.WriteLine(tempStr);
InBlock.gif49                                         }
InBlock.gif50                                         sw.Close();
InBlock.gif51                                         myStream.Close();
InBlock.gif52                                 }
InBlock.gif53                                 catch
InBlock.gif54                                 {
InBlock.gif55    
InBlock.gif56                                 }
InBlock.gif57                                 finally
InBlock.gif58                                 {
InBlock.gif59                                         sw.Close();
InBlock.gif60                                         myStream.Close();
InBlock.gif61                                 }
InBlock.gif62                                 }
InBlock.gif63                         }
InBlock.gif64                         catch
InBlock.gif65                         { }
InBlock.gif66                 }            
InBlock.gif67    
InBlock.gif68         }
InBlock.gif69 }
InBlock.gif70
此功能的实现需要一个.dll文件,文件全称为:Interop.Excel.dll,加载到你的项目中即可。