Winform技巧:TreeView导入Excel

将如上效果导入到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
        
第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
此功能的实现需要一个.dll文件,文件全称为:Interop.Excel.dll,加载到你的项目中即可。

本文出自 “叶子文文” 博客,转载请与作者联系!

你可能感兴趣的:(Excel,导入,treeview,WinForms,教学思路)