zoukankan      html  css  js  c++  java
  • ExcelHelper 通用类

        /// <summary>
        /// excel操作通用类
        /// </summary>
        public class ExcelHelper : IDisposable
        {
            // private static string _fileName; //文件名
            private static bool _disposed;
            private static FileStream _fs;
            private static IWorkbook _workbook;
    
    
    
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
    
            /// <summary>
            ///     判断工作部是否存在
            /// </summary>
            /// <param name="filename">execl文件名</param>
            /// <param name="sheetname">excel工作薄sheet的名称</param>
            /// <returns>返回的DataTable</returns>
            public static bool IsSheetExist(string filename, string sheetname)
            {
                var flag = true;
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet = _workbook.GetSheet(sheetname);
                    if (sheet == null)
                    {
                        return false;
    
                    }
    
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
    
                    return false;
                }
    
                return flag;
            }
    
            /// <summary>
            ///     判断execl是否有数据
            /// </summary>
            /// <param name="filename">execl文件名</param>
            /// <param name="sheetname">excel工作薄sheet的名称</param>
            /// <returns>返回的DataTable</returns>
            public static bool IsEmpty(string filename, string sheetname)
            {
                var flag = true;
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet = _workbook.GetSheet(sheetname);
                    if (sheet != null)
                    {
                        var firstRow = sheet.GetRow(0);
                        if (firstRow == null)
                        {
                            return false;
                        }
                    }
                    else
                    {
                        return false;
                    }
    
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
    
                    return false;
                }
    
                return flag;
            }
    
    
            /// <summary>
            ///     将DataTable数据导入到excel中
            /// </summary>
            /// <param name="data">要导入的数据</param>
            /// <param name="filename">文件名字</param>
            /// <param name="sheetName">要导入的excel的sheet的名称</param>
            /// <param name="isColumnWritten">DataTable的列名是否要导入</param>
            /// <returns>导入数据行数(包含列名那一行)</returns>
            public static int DataTableToExcel(DataTable data, string filename, string sheetName, bool isColumnWritten)
            {
                _fs = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                    _workbook = new XSSFWorkbook();
                else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                    _workbook = new HSSFWorkbook();
    
                try
                {
                    ISheet sheet;
                    if (_workbook != null)
                    {
                        sheet = _workbook.CreateSheet(sheetName);
    
                    }
                    else
                    {
                        return -1;
                    }
    
                    int j;
                    int count;
                    if (isColumnWritten) //写入DataTable的列名
                    {
                        var row = sheet.CreateRow(0);
                        for (j = 0; j < data.Columns.Count; ++j)
                        {
                            row.CreateCell(j).SetCellValue(data.Columns[j].ColumnName);
                        }
                        count = 1;
                    }
                    else
                    {
                        count = 0;
                    }
    
                    int i;
                    for (i = 0; i < data.Rows.Count; ++i)
                    {
                        var row = sheet.CreateRow(count);
                        for (j = 0; j < data.Columns.Count; ++j)
                        {
                            row.CreateCell(j).SetCellValue(data.Rows[i][j].ToString());
                        }
                        ++count;
                    }
                    _workbook.Write(_fs); //写入到excel
                    return count;
                }
                catch (Exception ex)
                {
                    //Console.WriteLine("Exception: " + ex.Message);
                    return -1;
                }
            }
    
    
        
            public static MemoryStream GetMemoryStream(DataSet ds, string file)
            {
                try
                {
                    IWorkbook workbook;
                    var fileExt = Path.GetExtension(file).ToLower();
                    switch (fileExt)
                    {
                        case ".xlsx":
                            workbook = new XSSFWorkbook(); //解析2007以后的版本
                            break;
                        case ".xls":
                            workbook = new HSSFWorkbook();//解析2003之前的版本
                            break;
                        default:
                            workbook = null;
                            break;
                    }
    
                    if (workbook == null)
                    {
                        return null;
    
                    }
    
                    #region  设置表头、填充数据
    
                    var sheetnum = 1;
                    foreach (DataTable dt in ds.Tables)
                    {
                        //创建工作簿
                        var sheet = string.IsNullOrEmpty(dt.TableName)
                            ? workbook.CreateSheet("Sheet" + sheetnum)
                            : workbook.CreateSheet(dt.TableName);
    
                        #region 设置表头
    
                        var row = sheet.CreateRow(0);
                        for (var i = 0; i < dt.Columns.Count; i++)
                        {
                            var cell = row.CreateCell(i);
                            cell.SetCellValue(dt.Columns[i].ColumnName);
                        }
    
                        #endregion
    
                        #region 填充数据
    
                        for (var i = 0; i < dt.Rows.Count; i++)
                        {
                            var row1 = sheet.CreateRow(i + 1);
                            for (var j = 0; j < dt.Columns.Count; j++)
                            {
                                var cell = row1.CreateCell(j);
                                cell.SetCellValue(dt.Rows[i][j].ToString());
                            }
                        }
    
                        #endregion
    
    
                        sheetnum++;
                    }
    
                    #endregion
    
    
    
                    //转为字节数组  
                    var stream = new MemoryStream();
                    workbook.Write(stream);
    
    
                    return stream;
    
    
    
                }
                catch (Exception e)
                {
                    return null;
                }
    
    
    
            }
    
                /// <summary>
            ///   DataSet数据保存到excel
            /// </summary>
            /// <param name="ds">excel数据源</param>
            /// <param name="filename"></param>
            /// <returns></returns>
            public static void DataSetToWebExcel(DataSet ds, string filename)
            {
                try
                {
                    IWorkbook workbook;
                    var fileExt = Path.GetExtension(filename).ToLower();
                    switch (fileExt)
                    {
                        case ".xlsx":
                            workbook = new XSSFWorkbook(); //解析2007以后的版本
                            break;
                        case ".xls":
                            workbook = new HSSFWorkbook();//解析2003之前的版本
                            break;
                        default:
                            workbook = null;
                            break;
                    }
                    
                    #region  设置表头、填充数据
    
                    var sheetnum = 1;
                    foreach (DataTable dt in ds.Tables)
                    {
                        //创建工作簿
                        var sheet = string.IsNullOrEmpty(dt.TableName)
                            ? workbook.CreateSheet("Sheet" + sheetnum)
                            : workbook.CreateSheet(dt.TableName);
    
                        #region 设置表头
    
                        var row = sheet.CreateRow(0);
                        for (var i = 0; i < dt.Columns.Count; i++)
                        {
                            var cell = row.CreateCell(i);
                            cell.SetCellValue(dt.Columns[i].ColumnName);
                        }
    
                        #endregion
    
                        #region 填充数据
    
                        for (var i = 0; i < dt.Rows.Count; i++)
                        {
                            var row1 = sheet.CreateRow(i + 1);
                            for (var j = 0; j < dt.Columns.Count; j++)
                            {
                                var cell = row1.CreateCell(j);
                                cell.SetCellValue(dt.Rows[i][j].ToString());
                            }
                        }
    
                        #endregion
    
    
                        sheetnum++;
                    }
    
                    #endregion
    
                    #region web保存数据到excel
    
                    //转为字节数组  
                    var stream = new MemoryStream();
                    if (workbook != null) workbook.Write(stream);
    
                    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
                    HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}",filename));
                    HttpContext.Current.Response.Clear();
               
                    HttpContext.Current.Response.BinaryWrite(stream.GetBuffer());
                    HttpContext.Current.Response.End();
    
    
                    #endregion
    
    
                  
    
    
                }
                catch (Exception e)
                {
                    MyLog4NetInfo.logError(String.Format("/DataSetToWebExcel-导出Excel异常,异常信息:{0}", e));
                }
    
    
    
    
            }
    
            /// <summary>
            /// 
            /// </summary>
            /// <param name="dt"></param>  
            /// <param name="filename"></param>
            public static void DataTableToWebExcel(DataTable dt, string filename)
            {
                try
                {
                    IWorkbook workbook;
                    var fileExt = Path.GetExtension(filename).ToLower();
                    switch (fileExt)
                    {
                        case ".xlsx":
                            workbook = new XSSFWorkbook(); //解析2007以后的版本
                            break;
                        case ".xls":
                            workbook = new HSSFWorkbook();//解析2003之前的版本
                            break;
                        default:
                            workbook = null;
                            break;
                    }
    
                     
    
                    #region  设置表头、填充数据
    
                    var sheetnum = 1;
    
                    //创建工作簿
                    var sheet = string.IsNullOrEmpty(dt.TableName)
                        ? workbook.CreateSheet("Sheet" + sheetnum)
                        : workbook.CreateSheet(dt.TableName);
    
                    #region 设置表头
    
                    var row = sheet.CreateRow(0);
                    for (var i = 0; i < dt.Columns.Count; i++)
                    {
                        var cell = row.CreateCell(i);
                        cell.SetCellValue(dt.Columns[i].ColumnName);
                    }
    
                    #endregion
    
                    #region 填充数据
    
                    for (var i = 0; i < dt.Rows.Count; i++)
                    {
                        var row1 = sheet.CreateRow(i + 1);
                        for (var j = 0; j < dt.Columns.Count; j++)
                        {
                            var cell = row1.CreateCell(j);
                            cell.SetCellValue(dt.Rows[i][j].ToString());
                        }
                    }
    
                    #endregion
    
    
    
    
                    #endregion
    
                    #region web保存数据到excel
    
                    //转为字节数组  
                    var stream = new MemoryStream();   
                    workbook.Write(stream);         
                    
                    HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
                    HttpContext.Current.Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}",filename));
                    HttpContext.Current.Response.Clear();
    
                                
                    HttpContext.Current.Response.BinaryWrite(stream.GetBuffer());
                    HttpContext.Current.Response.End();
    
    
                    #endregion
    
    
                }
                catch (Exception e)
                {
                   
                }
            }
    
            /// <summary>
            ///     将excel中的数据导入到DataTable中
            /// </summary>
            /// <param name="filename"></param>
            /// <param name="sheetIndex">excel工作薄sheet的index值</param>
            /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
            /// <param name="message"></param>
            /// <returns>返回的DataTable</returns>
            public static DataTable ExcelToDataTable(string filename, int sheetIndex, bool isFirstRowColumn, out string message)
            {
                var returns = string.Empty;
                var data = new DataTable();
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
                    ISheet sheet;
    
                    sheet = _workbook.GetSheetAt(sheetIndex);
    
                    // Source名称 fileName+sheetName
                    var pureFileName = filename.Substring(filename.LastIndexOf("\") + 1);
                    var sourceName = pureFileName + "@" + sheet.SheetName;
    
                    if (sheet != null)
                    {
                        var firstRow = sheet.GetRow(0);
    
                        if (firstRow == null)
                        {
                            returns = "Excel表的列为空!!!";
                        }
                        else
                        {
                            int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数
    
                            int startRow;
                            if (isFirstRowColumn)
                            {
                                for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                {
                                    var cell = firstRow.GetCell(i);
                                    var cellValue = cell.StringCellValue;
                                    if (cellValue != null)
                                    {
                                        var column = new DataColumn(cellValue);
                                        data.Columns.Add(column);
                                    }
                                }
                                // 循环结束后,在最后添加来源sheet名称,命名为source_sheet
                                data.Columns.Add("source_sheet");
                                startRow = sheet.FirstRowNum + 1;
                            }
                            else
                            {
                                startRow = sheet.FirstRowNum;
                            }
                            //最后一列的标号
                            var rowCount = sheet.LastRowNum;
                            for (var i = startRow; i <= rowCount; ++i)
                            {
                                var row = sheet.GetRow(i);
                                if (row == null) continue; //没有数据的行默认是null       
    
                                var dataRow = data.NewRow();
                                for (int j = row.FirstCellNum; j < cellCount; ++j)
                                {
                                    if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                                        dataRow[j] = row.GetCell(j).ToString();
                                }
                                // 循环结束后添加来源Sheet
                                dataRow[cellCount] = sourceName;
                                data.Rows.Add(dataRow);
                            }
                            returns = "";
                        }
                    }
    
                    message = returns;
                    return data;
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
                    message = ex.Message;
                    return null;
                }
            }
    
    
            /// <summary>
            ///     将excel中的数据导入到DataTable中
            /// </summary>
            /// <param name="filename">文件路径;c://test.xlsx</param>
            /// <param name="sheetname">excel工作薄sheet的名称;模板</param>
            /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>
            /// <param name="message"></param>
            /// <returns>返回的DataTable</returns>
            public static DataTable ExcelToDataTable(string filename, string sheetname, bool isFirstRowColumn, out string message)
            {
                var returns = string.Empty;
                var data = new DataTable();
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet;
    
                    sheet = _workbook.GetSheet(sheetname);
    
                    // Source名称 fileName+sheetName
                    var pureFileName = filename.Substring(filename.LastIndexOf("\") + 1);
                    var sourceName = pureFileName + "@" + sheet.SheetName;
    
                    if (sheet != null)
                    {
                        var firstRow = sheet.GetRow(0);
    
                        if (firstRow == null)
                        {
                            returns = "Excel表的列为空!!!";
                        }
                        else
                        {
                            int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数
    
                            int startRow;
                            if (isFirstRowColumn)
                            {
                                for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                {
                                    var cell = firstRow.GetCell(i);
                                    var cellValue = cell.StringCellValue;
                                    if (cellValue != null)
                                    {
                                        var column = new DataColumn(cellValue);
                                        data.Columns.Add(column);
                                    }
                                }
                                // 循环结束后,在最后添加来源sheet名称,命名为source_sheet
                                data.Columns.Add("source_sheet");
                                startRow = sheet.FirstRowNum + 1;
                            }
                            else
                            {
                                startRow = sheet.FirstRowNum;
                            }
                            //最后一列的标号
                            var rowCount = sheet.LastRowNum;
                            for (var i = startRow; i <= rowCount; ++i)
                            {
                                var row = sheet.GetRow(i);
                                if (row == null) continue; //没有数据的行默认是null       
    
                                var dataRow = data.NewRow();
                                for (int j = row.FirstCellNum; j < cellCount; ++j)
                                {
                                    if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                                        dataRow[j] = row.GetCell(j).ToString();
                                }
                                // 循环结束后添加来源Sheet
                                dataRow[cellCount] = sourceName;
                                data.Rows.Add(dataRow);
                            }
                            returns = "";
                        }
                    }
    
                    message = returns;
                    return data;
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
                    message = ex.Message;
                    return null;
                }
            }
    
    
            /// <summary>
            ///     将excel中的数据导入到DataTable中
            /// </summary>
            /// <param name="filename">execl文件名</param>
            /// <param name="sheetname">excel工作薄sheet的名称</param>
            /// <param name="isFirstRowColumn">第一行是否是DataTable的列名</param>    
            /// <returns>返回的DataTable</returns>
            public static DataTable ExcelToDataTable(string filename, string sheetname, bool isFirstRowColumn)
            {
                var returns = string.Empty;
                var data = new DataTable();
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet;
    
                    sheet = _workbook.GetSheet(sheetname);
    
                    // Source名称 fileName+sheetName
                    var pureFileName = filename.Substring(filename.LastIndexOf("\") + 1);
                    var sourceName = pureFileName + "@" + sheet.SheetName;
    
                    if (sheet != null)
                    {
                        var firstRow = sheet.GetRow(0);
    
                        if (firstRow == null)
                        {
                            returns = "Excel表的列为空!!!";
                        }
                        else
                        {
                            int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数
    
                            int startRow;
                            if (isFirstRowColumn)
                            {
                                for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                                {
                                    var cell = firstRow.GetCell(i);
                                    var cellValue = cell.StringCellValue;
                                    if (cellValue != null)
                                    {
                                        var column = new DataColumn(cellValue);
                                        data.Columns.Add(column);
                                    }
                                }
                                // 循环结束后,在最后添加来源sheet名称,命名为source_sheet
                                data.Columns.Add("source_sheet");
                                startRow = sheet.FirstRowNum + 1;
                            }
                            else
                            {
                                startRow = sheet.FirstRowNum;
                            }
                            //最后一列的标号
                            var rowCount = sheet.LastRowNum;
    
                            for (var i = startRow; i <= rowCount; ++i)
                            {
                                // var row = sheet.GetRow(i);
                                // if (row == null) continue; //没有数据的行默认是null       
                                IRow row = sheet.GetRow(i);
                                if (row != null)
                                {
                                    var dataRow = data.NewRow();
                                    for (int j = 0; j < cellCount; ++j)
                                    {
                                        if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                                            dataRow[j] = row.GetCell(j).ToString();
                                    }
                                    //for (int j = row.FirstCellNum; j < cellCount; ++j)
                                    //{
                                    //    if (row.GetCell(j) != null) //同理,没有数据的单元格都默认是null
                                    //        dataRow[j] = row.GetCell(j).ToString();
                                    //}
                                    // 循环结束后添加来源Sheet
                                    dataRow[cellCount] = sourceName;
                                    data.Rows.Add(dataRow);
                                }
    
    
                            }
                        }
                    }
    
    
                    return data;
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
    
                    return null;
                }
            }
    
    
            /// <summary>
            /// 获取Excel文件的列数
            /// </summary>
            /// <returns></returns>
            public static int GetCellNums(string filename, string sheetname, bool isFirstRowColumn)
            {
    
                int cellnums = 0;
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet = _workbook.GetSheet(sheetname);
                    var firstRow = sheet.GetRow(0);
                    if (firstRow == null)
                    {
                        cellnums = 0;
                    }
                    else
                    {
                        cellnums = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数     
    
                    }
    
                    return cellnums;
                }
    
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
    
                    return 0;
                }
            }
    
            /// <summary>
            /// 判断指定列名是否存在
            /// </summary>
            /// <returns></returns>
            public static string IsExistAppointCellName(string filename, string sheetname, List<string> listcellnames)
            {
    
                string resul = string.Empty;
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    ISheet sheet = _workbook.GetSheet(sheetname);
                    var firstRow = sheet.GetRow(0);
                    if (firstRow == null)
                    {
                        resul = "列名获取失败";
                    }
                    else
                    {
                        int cellCount = firstRow.LastCellNum; //一行最后一个cell的编号 即总的列数  
                        List<string> celllist = new List<string>();
                        for (int i = firstRow.FirstCellNum; i < cellCount; ++i)
                        {
                            var cell = firstRow.GetCell(i);
                            var cellValue = cell.StringCellValue;
                            if (cellValue != null)
                            {
                                var column = new DataColumn(cellValue);
                                celllist.Add(column.ColumnName);
                            }
                        }
    
                        string[] arrtemp = listcellnames.Except(celllist).ToArray();
                        resul = arrtemp.Length > 0 ? string.Join(",", arrtemp) : "";
    
                    }
    
                    return resul;
                }
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
    
                    return "列名获取失败";
                }
            }
    
    
            /// <summary>
            /// 获取Excel文件的Sheet个数
            /// </summary>
            /// <returns></returns>
            public int GetSheets(string filename)
            {
                try
                {
                    _fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
                    if (filename.IndexOf(".xlsx", StringComparison.Ordinal) > 0) // 2007版本
                        _workbook = new XSSFWorkbook(_fs);
                    else if (filename.IndexOf(".xls", StringComparison.Ordinal) > 0) // 2003版本
                        _workbook = new HSSFWorkbook(_fs);
    
                    return _workbook.NumberOfSheets;
                }
                catch (Exception ex)
                {
                    //ErrHandler.WriteContent("----执行文件异常----" + ex.Message);
                    return 0;
                }
            }
    
    
    
            /// <summary>
            /// 将DataTable转化为csv文件
            /// </summary>
            /// <param name="dataTable"></param>
            /// <param name="csvPath"></param>
            public void ConvertDataTableToCsv(DataTable dataTable, String csvPath, ref HashSet<string> titleSet)
            {
                try
                {
                    if (File.Exists(csvPath))
                    {
                        File.Delete(csvPath);
                    }
    
                    // Create the file.
                    using (FileStream fs = File.Create(csvPath))
                    {
                        foreach (DataColumn col in dataTable.Columns)
                        {
                            titleSet.Add(col.Caption);
                        }
    
                        foreach (DataRow row in dataTable.Rows)
                        {
                            string line = "";
                            foreach (var item in row.ItemArray)
                            {
                                if (item.GetType().ToString() == "System.String")
                                {
                                    line += item + ",";
                                }
                                else if (item.GetType().ToString() == "System.DBNull")
                                {
                                    line += ",";
                                }
    
                            }
                            line = line.Remove(line.Length - 1);
                            line += "
    ";
                            Byte[] info = new UTF8Encoding(true).GetBytes(line);
                            fs.Write(info, 0, info.Length);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.ToString());
                }
            }
    
            protected virtual void Dispose(bool disposing)
            {
                if (!_disposed)
                {
                    if (disposing)
                    {
                        _fs.Close();
                    }
    
                    _fs = null;
                    _disposed = true;
                }
            }
    
    
    
    
        }
    

     

    注:需要引用NOPI.dll
    下载地址:https://www.nuget.org/packages/NPOI/ 

    Top
    收藏
    关注
    评论
  • 相关阅读:
    淘宝npm镜像
    mousedown监听onmousemove判断鼠标指针移动方向的JavaScript
    vue 生命周期流程图 go.js
    微信在pc端打开多窗口.bat
    bootstrap配置
    前端入门到进阶图文教程,超详细的Web前端学习笔记。从零开始学前端,做一名精致优雅的前端工程师。
    低代码开发平台
    开源在线绘图工具,界面美观,功能丰富
    IOS 空字符串报错 解决办法
    vue 在使用数组的时候,数组内部数据发生变化,视图却没有改变
  • 原文地址:https://www.cnblogs.com/for917157ever/p/15137784.html
Copyright © 2011-2022 走看看