我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C# excel与DataTable之间的转换

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C# excel与DataTable之间的转换

注意,Excel读入DataTable需要使用NPOI包

///   /// Excel导入成Datable  ///   /// 导入路径(包含文件名与扩展名)  ///   public static DataTable ExcelToTable(string file, string sheetName = "")  {    DataTable dt = new DataTable();    IWorkbook workbook = null;    try    {      string fileExt = Path.GetExtension(file).ToLower();      using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read))      {        //XSSFWorkbook 适用XLSX格式,HSSFWorkbook 适用XLS格式        if (fileExt == ".xlsx") { workbook = new XSSFWorkbook(fs); } else if (fileExt == ".xls") { workbook = new HSSFWorkbook(fs); } else { workbook = null; }        if (workbook == null) { return null; }        ISheet sheet = string.IsNullOrWhiteSpace(sheetName) ? workbook.GetSheetAt(0) : workbook.GetSheet(sheetName);        //表头          IRow header = sheet.GetRow(sheet.FirstRowNum);        if (header == null)        {          throw new Exception("Excel表没有数据,请添加数据");        }        List<int> columns = new List<int>();        for (int i = 0; i < header.LastCellNum; i++)        {          object obj = GetValueType(header.GetCell(i));          if (obj == null || obj.ToString().Trim() == string.Empty)          {            continue;          }          else          {            dt.Columns.Add(new DataColumn(obj.ToString()));          }          columns.Add(i);        }        //数据          for (int i = sheet.FirstRowNum + 1; i <= sheet.LastRowNum; i++)        {          DataRow dr = dt.NewRow();          bool hasValue = false;          foreach (int j in columns)          {            if (sheet.GetRow(i) != null) {              dr[j] = GetValueType(sheet.GetRow(i).GetCell(j));            }                        //if (dr[j] != null && dr[j].ToString() != string.Empty)            //{            //  hasValue = true;            //}          }          //if (hasValue)          //{          //  dt.Rows.Add(dr);          //}          dt.Rows.Add(dr);        }        dt.AcceptChanges();      }      return dt;    }    catch (Exception e)    {      return null;    }    finally    {      if (dt != null) { dt.Dispose(); }      if (workbook != null) { workbook = null; }    }  }  ///   /// 获取单元格类型  ///   ///   ///   private static object GetValueType(ICell cell)  {    if (cell == null)      return null;    switch (cell.CellType)    {      case CellType.Blank: //BLANK:          return "";      case CellType.Boolean: //BOOLEAN:          return cell.BooleanCellValue;      case CellType.Numeric: //NUMERIC:          return cell.NumericCellValue;      case CellType.String: //STRING:          return cell.StringCellValue;      case CellType.Error: //ERROR:          return cell.ErrorCellValue;      case CellType.Formula: //FORMULA:        default:        return "=" + cell.CellFormula;    }  }

DataTable读入Excel

/// /// Datatable生成Excel表格并返回路径/// /// Datatable/// 文件名/// public static string DataToExcel(System.Data.DataTable m_DataTable, string s_FileName){//string FileName = @"C:\Users\JK\Desktop\DataTableToExcel\" + s_FileName + ".xlsx";  //文件存放路径string FileName = s_FileName;if (System.IO.File.Exists(FileName))    //存在则删除{System.IO.File.Delete(FileName);}System.IO.FileStream objFileStream;System.IO.StreamWriter objStreamWriter;string strLine = "";objFileStream = new System.IO.FileStream(FileName, System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write);objStreamWriter = new System.IO.StreamWriter(objFileStream, Encoding.Unicode);for (int i = 0; i < m_DataTable.Columns.Count; i++){strLine = strLine + m_DataTable.Columns[i].Caption.ToString() + Convert.ToChar(9);      //写列标题}objStreamWriter.WriteLine(strLine);strLine = "";for (int i = 0; i < m_DataTable.Rows.Count; i++){for (int j = 0; j < m_DataTable.Columns.Count; j++){if (m_DataTable.Rows[i].ItemArray[j] == null)strLine = strLine + " " + Convert.ToChar(9);        //写内容else{string rowstr = "";rowstr = m_DataTable.Rows[i].ItemArray[j].ToString();if (rowstr.IndexOf("\r\n") > 0)rowstr = rowstr.Replace("\r\n", " ");if (rowstr.IndexOf("\t") > 0)rowstr = rowstr.Replace("\t", " ");strLine = strLine + rowstr + Convert.ToChar(9);}}objStreamWriter.WriteLine(strLine);strLine = "";}objStreamWriter.Close();objFileStream.Close();return FileName;        //返回生成文件的绝对路径}

来源地址:https://blog.csdn.net/mingjing941018/article/details/132512786

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C# excel与DataTable之间的转换

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C# excel与DataTable之间的转换

注意,Excel读入DataTable需要使用NPOI包 /// /// Excel导入成Datable /// /// 导入路径(包含文件名与扩展名) /// public static DataTable ExcelTo
2023-08-30

C#怎么把EXCEL数据转换成DataTable

今天小编给大家分享一下C#怎么把EXCEL数据转换成DataTable的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C#实现
2023-06-29

C#Csv实现基本的读写和转换DataTable

本文主要介绍了C#Csv实现基本的读写和转换DataTable,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-05

C++实现百度坐标(BD09)及GCJ02与WGS84之间的转换

这篇文章主要为大家详细介绍了C++实现百度坐标(BD09)及GCJ02与WGS84之间的转换的方法,文中的示例代码讲解详细,希望对大家有所帮助
2023-03-03

C++怎么实现百度坐标及GCJ02与WGS84之间的转换

这篇文章主要讲解了“C++怎么实现百度坐标及GCJ02与WGS84之间的转换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++怎么实现百度坐标及GCJ02与WGS84之间的转换”吧!实现代
2023-07-05

Tensor与Numpy之间的转换: 示例和应用

Tensor与Numpy转换的实例与应用TensorFlow是一个非常流行的深度学习框架,而Numpy是Python科学计算的核心库。由于TensorFlow和Numpy都使用多维数组来操作数据,因此在实际应用中,我们经常需要在这两者之间
Tensor与Numpy之间的转换: 示例和应用
2024-01-26

python label与one-hot之间的互相转换方式

这篇文章主要介绍了python label与one-hot之间的互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-01

MYSQL与SQLserver之间存储过程的转换方式

目录mysql与SQLserver之间存储过程的转换mysql存储过程sqlserver存储过程SQLserver转MYSQL存储过程的经验1. 存储过程的定义方式存在区别2. 批处理分隔符存在差异3. 可直接替换的关键字4、select语
2022-11-28

java中父类与子类之间的转换问题

示例一父类强制转子类Father f = new Father();Son s = (Father)f;//出错 ClassCastException分析:创建一个父类的实例,想要强制把父类对象转换成子类的,不行!通俗的想,真正当爹的永远不可能装儿子。在线学习
java中父类与子类之间的转换问题
2018-08-17

编程热搜

目录