从DataList读出的数据 ,如何导入到Excel表

从DataList读出的数据 ,怎么导入到Excel表
如题~~~~~~~~~~~~~~~~~~~~~~~~~~
------解决方案--------------------
google:  NPOI C#
------解决方案--------------------
NPOI很方便,直接写到Excel里面去:
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using NPOI.HSSF.UserModel;
using System.IO;

namespace MyNPOI
{
    public partial class FrmCreateXLS : Form
    {
        public FrmCreateXLS()
        {
            InitializeComponent();
        }

        private void btnCreateExcel_Click(object sender, EventArgs e)
        {
            HSSFWorkbook hswookbook = new HSSFWorkbook();

            hswookbook.CreateSheet("MySheet1");
            hswookbook.CreateSheet("MySheet2");
            hswookbook.CreateSheet("MySheet3");

            HSSFSheet hssfsheet = (HSSFSheet)hswookbook.GetSheet("MySheet1");


            //***********************************************************
            //这里虚拟一个Table 
            DataTable dt = new DataTable();
            for (int i = 0; i < 10; i++)
            {
                dt.Columns.Add();
            }
            //行
            for (int i = 0; i < 20; i++)
            {
                dt.Rows.Add(0, 1, 2, 3, 4, 5, 6, 7, 8, 9);
            }
            //***********************************************************

            HSSFRow row = (HSSFRow)hssfsheet.CreateRow(0);            
            hssfsheet.GetRow(0).CreateCell(0, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("Title1");
            hssfsheet.GetRow(0).CreateCell(1, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("Title2");
            hssfsheet.GetRow(0).CreateCell(2, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("Title3");
            hssfsheet.GetRow(0).CreateCell(3, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue("Title4");            

            for (int i = 0; i < dt.Rows.Count; i++)
            { 
                HSSFRow r = (HSSFRow)hssfsheet.CreateRow(i+1);               
                r.CreateCell(0, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dt.Rows[i]["Column1"].ToString());
                r.CreateCell(1, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dt.Rows[i]["Column2"].ToString());
                r.CreateCell(2, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dt.Rows[i]["Column3"].ToString());
                r.CreateCell(3, HSSFCell.ENCODING_COMPRESSED_UNICODE).SetCellValue(dt.Rows[i]["Column4"].ToString());  
            }
            
            FileStream file = new FileStream(@"C:\test.xls", FileMode.Create);