C#实现DataTable转为Excel文件            

    实现DataTable转为Excel文件,和上次分享的Excel文件转为DataTable互为反操作。DataTable转化为Excel文件是通过传入一个DataTable类型的参数,然后将传入的DataTable转化为Excel文件。实现关键代码如下:

public void ToExcel(DataTable dt)
    {        #region 3s  
        var FilePath = @"D:\ToExcel\";//产生Excel文件路径        DeleteFile(FilePath);        //创建全新的Workbook 
        var workbook = new HSSFWorkbook();//一個sheet最多65536行
        var count = 0;        for (double i = 0; i < Convert.ToDouble(dt.Rows.Count) / Convert.ToDouble(65534); i++)//每个Excel文件的一个页签只能存放65536行数据        {            var row_index = 0;            //创建Sheet
            workbook.CreateSheet("Sheet" + i);            //根据Sheet名字获得Sheet对象  
            var sheet = workbook.GetSheet("Sheet" + i);
            IRow row;
            row = sheet.CreateRow(row_index);            //写入标题
            for (int j = 0; j < dt.Columns.Count; j++)
            {
                row.CreateCell(j).SetCellValue(dt.Columns[j].Caption.ToString());
            }
            row = sheet.CreateRow(++row_index);            //写入数据
            for (int j = 0; j < (dt.Rows.Count - count > 65534 ? 65534 : dt.Rows.Count - count); j++)
            {                var r = dt.Rows[j + count];                for (int k = 0; k<dt.Columns.Count; k++)
                {
                    row.CreateCell(k).SetCellValue(r[k].ToString());                    //如果是数字,判断是否需要转换为数字                    //if (IsNumeric(r[k].ToString()))                    //{                    //    row.CreateCell(k).SetCellValue(Convert.ToDouble(r[k].ToString()));                    //}                    //else                    //{                    //    row.CreateCell(k).SetCellValue(r[k].ToString());                    //}                }

                row = sheet.CreateRow(++row_index);
            }
            count += row_index - 2;
        }        //保存Workbook方式一: 以文件形式保存到服务器中(每次导出都会生成一个文件,慎重使用)
        var FileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";        var sw = File.Create(FilePath + FileName);
        workbook.Write(sw);
        sw.Close();        var EC = new ExcelConverter();
        EC.WebopenExcel(Response, FilePath + FileName);        #endregion
    }