将如上效果导入到Excel中,效果如:
原理:先将数据按照你想要的表格效果做成DataTable,然后在导入到Excel中
做成DataTable的方法:
Code
1
//导出Excel课表信息
2 private void button5_Click( object sender, EventArgs e)
3 {
4 DataTable dt = new DataTable();
5 dt.TableName = "班级:" + treeView1.Nodes[0].Text + treeView1.Nodes[0].Nodes[0].Text + "年" + treeView1.Nodes[0].Nodes[0].Nodes[0].Text + "课程表";
6 dt.Columns.Add( "时间段", typeof ( string));
7 dt.Columns.Add( "星期一", typeof( string));
8 dt.Columns.Add( "星期二", typeof( string));
9 dt.Columns.Add( "星期三", typeof( string));
10 dt.Columns.Add( "星期四", typeof( string));
11 dt.Columns.Add( "星期五", typeof( string));
12 DataRow r0 = dt.NewRow();
13 r0[ "时间段"] = "时间段";
14 r0[ "星期一"] = "星期一";
15 r0[ "星期二"] = "星期二";
16 r0[ "星期三"] = "星期三";
17 r0[ "星期四"] = "星期四";
18 r0[ "星期五"] = "星期五";
19 dt.Rows.Add(r0);
20 DataRow r1 = dt.NewRow();
21 r1[ "时间段"] = "08:00-10:00";
22 dt.Rows.Add(r1);
23 DataRow r2 = dt.NewRow();
24 r2[ "时间段"] = "10:00-12:00";
25 dt.Rows.Add(r2);
26 DataRow r3 = dt.NewRow();
27 r3[ "时间段"] = "14:00-16:00";
28 dt.Rows.Add(r3);
29 DataRow r4 = dt.NewRow();
30 r4[ "时间段"] = "16:00-18:00";
31 dt.Rows.Add(r4);
32 for ( int j = 1; j <= 5; j++)
33 {
34 for ( int i = 0; i < treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Count; i++) //遍历星期
35 {
36 if (treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Text.Trim() == dt.Columns[j].ColumnName) //找到星期相等的
37 {
38 string s=treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Nodes [0].Text.Trim (); //找到时间段和科目
39 string time=s.Substring (0,s.IndexOf ( "|")); //变量科目
40 string km=s.Substring (s.IndexOf ( "|")+1);
41 for ( int z = 1; z <= 4; z++)
42 {
43 string sj = dt.Rows[z][0].ToString();
44 if (time.Trim() == sj)
45 {
46 dt.Rows[z][j] = km;
47 }
48 }
49 }
50
51 }
52 }
53 DGVToExcel ds = new DGVToExcel(); //导入到Excel中
54 ds.SaveAs(dt);
55
56 }
57
2 private void button5_Click( object sender, EventArgs e)
3 {
4 DataTable dt = new DataTable();
5 dt.TableName = "班级:" + treeView1.Nodes[0].Text + treeView1.Nodes[0].Nodes[0].Text + "年" + treeView1.Nodes[0].Nodes[0].Nodes[0].Text + "课程表";
6 dt.Columns.Add( "时间段", typeof ( string));
7 dt.Columns.Add( "星期一", typeof( string));
8 dt.Columns.Add( "星期二", typeof( string));
9 dt.Columns.Add( "星期三", typeof( string));
10 dt.Columns.Add( "星期四", typeof( string));
11 dt.Columns.Add( "星期五", typeof( string));
12 DataRow r0 = dt.NewRow();
13 r0[ "时间段"] = "时间段";
14 r0[ "星期一"] = "星期一";
15 r0[ "星期二"] = "星期二";
16 r0[ "星期三"] = "星期三";
17 r0[ "星期四"] = "星期四";
18 r0[ "星期五"] = "星期五";
19 dt.Rows.Add(r0);
20 DataRow r1 = dt.NewRow();
21 r1[ "时间段"] = "08:00-10:00";
22 dt.Rows.Add(r1);
23 DataRow r2 = dt.NewRow();
24 r2[ "时间段"] = "10:00-12:00";
25 dt.Rows.Add(r2);
26 DataRow r3 = dt.NewRow();
27 r3[ "时间段"] = "14:00-16:00";
28 dt.Rows.Add(r3);
29 DataRow r4 = dt.NewRow();
30 r4[ "时间段"] = "16:00-18:00";
31 dt.Rows.Add(r4);
32 for ( int j = 1; j <= 5; j++)
33 {
34 for ( int i = 0; i < treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes.Count; i++) //遍历星期
35 {
36 if (treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Text.Trim() == dt.Columns[j].ColumnName) //找到星期相等的
37 {
38 string s=treeView1.Nodes[0].Nodes[0].Nodes[0].Nodes[i].Nodes [0].Text.Trim (); //找到时间段和科目
39 string time=s.Substring (0,s.IndexOf ( "|")); //变量科目
40 string km=s.Substring (s.IndexOf ( "|")+1);
41 for ( int z = 1; z <= 4; z++)
42 {
43 string sj = dt.Rows[z][0].ToString();
44 if (time.Trim() == sj)
45 {
46 dt.Rows[z][j] = km;
47 }
48 }
49 }
50
51 }
52 }
53 DGVToExcel ds = new DGVToExcel(); //导入到Excel中
54 ds.SaveAs(dt);
55
56 }
57
第53行为导入到Excel的公共类,SaveAS是导入的具体方法
Code
1
using System;
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.IO;
9
10 namespace 教务管理系统
11 {
12 class DGVToExcel
13 {
14 public void SaveAs(DataTable dt) //另存新档按钮 导出成Excel
15 {
16 try
17 {
18 SaveFileDialog saveFileDialog = new SaveFileDialog();
19 saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
20 saveFileDialog.FilterIndex = 0;
21 saveFileDialog.RestoreDirectory = true;
22 saveFileDialog.CreatePrompt = true;
23 saveFileDialog.Title = "导出Excel到";
24 if(saveFileDialog.ShowDialog()==DialogResult.OK)
25 {
26 Stream myStream;
27 myStream = saveFileDialog.OpenFile();
28 StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
29 string str = "";
30 try
31 {
32 //写标题
33
34 str +=dt.TableName;
35 sw.WriteLine(str);
36 //写内容
37 for ( int j = 0; j < dt.Rows.Count; j++)
38 {
39 string tempStr = "";
40 for ( int k = 0; k < dt.Columns.Count; k++)
41 {
42 if (k > 0)
43 {
44 tempStr += "\t";
45 }
46 tempStr += dt.Rows[j][k].ToString();
47 }
48 sw.WriteLine(tempStr);
49 }
50 sw.Close();
51 myStream.Close();
52 }
53 catch
54 {
55
56 }
57 finally
58 {
59 sw.Close();
60 myStream.Close();
61 }
62 }
63 }
64 catch
65 { }
66 }
67
68 }
69 }
70
2 using System.Collections.Generic;
3 using System.ComponentModel;
4 using System.Data;
5 using System.Drawing;
6 using System.Text;
7 using System.Windows.Forms;
8 using System.IO;
9
10 namespace 教务管理系统
11 {
12 class DGVToExcel
13 {
14 public void SaveAs(DataTable dt) //另存新档按钮 导出成Excel
15 {
16 try
17 {
18 SaveFileDialog saveFileDialog = new SaveFileDialog();
19 saveFileDialog.Filter = "Execl files (*.xls)|*.xls";
20 saveFileDialog.FilterIndex = 0;
21 saveFileDialog.RestoreDirectory = true;
22 saveFileDialog.CreatePrompt = true;
23 saveFileDialog.Title = "导出Excel到";
24 if(saveFileDialog.ShowDialog()==DialogResult.OK)
25 {
26 Stream myStream;
27 myStream = saveFileDialog.OpenFile();
28 StreamWriter sw = new StreamWriter(myStream, System.Text.Encoding.GetEncoding(-0));
29 string str = "";
30 try
31 {
32 //写标题
33
34 str +=dt.TableName;
35 sw.WriteLine(str);
36 //写内容
37 for ( int j = 0; j < dt.Rows.Count; j++)
38 {
39 string tempStr = "";
40 for ( int k = 0; k < dt.Columns.Count; k++)
41 {
42 if (k > 0)
43 {
44 tempStr += "\t";
45 }
46 tempStr += dt.Rows[j][k].ToString();
47 }
48 sw.WriteLine(tempStr);
49 }
50 sw.Close();
51 myStream.Close();
52 }
53 catch
54 {
55
56 }
57 finally
58 {
59 sw.Close();
60 myStream.Close();
61 }
62 }
63 }
64 catch
65 { }
66 }
67
68 }
69 }
70
此功能的实现需要一个.dll文件,文件全称为:Interop.Excel.dll,加载到你的项目中即可。
转载于:https://blog.51cto.com/leafwf/185798