zoukankan      html  css  js  c++  java
  • 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
        }
  • 相关阅读:
    C# 读取 vCard 格式
    C#自动选择出系统中最合适的IP地址
    WPF专业编程指南
    WPF专业编程指南
    随手复习一下委托:delegate
    迟到的 WPF 学习 —— 控件
    迟到的 WPF 学习 —— 路由事件
    迟到的 WPF 学习 —— 依赖项属性
    迟到的 WPF 学习 —— 布局
    JavaScript 左右上下自动晃动,自动移动。
  • 原文地址:https://www.cnblogs.com/moon3/p/12767680.html
Copyright © 2011-2022 走看看