c#读取excel方法实例分析

所属分类: 软件编程 / C#教程 阅读数: 35
收藏 0 赞 0 分享

本文实例讲述了c#读取excel方法。分享给大家供大家参考。具体分析如下:

Provider根据实际EXCEL的版本来设置,推荐使用ACE接口来读取。需要Access database Engine。

注意修改注册表以下两项的值为0。否则导入EXCEL当单元格内字符长度超过255会发生截断现象!!!

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\12.0\AccessConnectivity Engine\Engines\Excel\TypeGuessRows

64位系统下

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\12.0\Access Connectivity Engine\Engines\Excel\ TypeGuessRows

看到论坛里面不断有人提问关于读取excel和导入excel的相关问题。闲暇时间将我所知道的对excel的操作加以总结,现在共享大家,希望给大家能够给大家带了一定的帮助。

另外我们还要注意一些简单的问题:

①. excel文件只能存储65535行数据,如果你的数据大于65535行,那么就需要将excel分割存放了。
②. 关于乱码,这主要是字符设置问题。

1.加载Excel(读取excel内容)返回值是一个DataSet

//加载Excel  
public static DataSet LoadDataFromExcel(string filePath) 
{ 
  try 
  { 
    string strConn; 
    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; 
    OleDbConnection OleConn = new OleDbConnection(strConn); 
    OleConn.Open(); 
    String sql = "SELECT * FROM [Sheet1$]";
    //可是更改Sheet名称,比如sheet2,等等  
    OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
    DataSet OleDsExcle = new DataSet(); 
    OleDaExcel.Fill(OleDsExcle, "Sheet1"); 
    OleConn.Close(); 
    return OleDsExcle; 
  } 
  catch (Exception err) 
  { 
    MessageBox.Show("数据绑定Excel失败!失败原因:" + err.Message, "提示信息", 
      MessageBoxButtons.OK, MessageBoxIcon.Information); 
    return null; 
  } 
} 

2.写入Excel内容,参数:excelTable是要导入excel的一个table表

public static bool SaveDataTableToExcel(System.Data.DataTable excelTable, string filePath) 
{ 
  Microsoft.Office.Interop.Excel.Application app = 
    new Microsoft.Office.Interop.Excel.ApplicationClass(); 
  try 
  { 
    app.Visible = false; 
    Workbook wBook = app.Workbooks.Add(true); 
    Worksheet wSheet = wBook.Worksheets[1] as Worksheet; 
    if (excelTable.Rows.Count > 0) 
    { 
      int row = 0; 
      row = excelTable.Rows.Count; 
      int col = excelTable.Columns.Count; 
      for (int i = 0; i < row; i++) 
      { 
        for (int j = 0; j < col; j++) 
        { 
          string str = excelTable.Rows[i][j].ToString(); 
          wSheet.Cells[i + 2, j + 1] = str; 
        } 
      } 
    } 
    int size = excelTable.Columns.Count; 
    for (int i = 0; i < size; i++) 
    { 
      wSheet.Cells[1, 1 + i] = excelTable.Columns[i].ColumnName; 
    } 
    //设置禁止弹出保存和覆盖的询问提示框  
    app.DisplayAlerts = false; 
    app.AlertBeforeOverwriting = false; 
    //保存工作簿  
    wBook.Save(); 
    //保存excel文件  
    app.Save(filePath); 
    app.SaveWorkspace(filePath); 
    app.Quit(); 
    app = null; 
    return true; 
  } 
  catch (Exception err) 
  { 
    MessageBox.Show("导出Excel出错!错误原因:" + err.Message, "提示信息", 
      MessageBoxButtons.OK, MessageBoxIcon.Information); 
    return false; 
  } 
  finally 
  { 
  } 
}

希望本文所述对大家的C#程序设计有所帮助。

更多精彩内容其他人还在看

winform用datagridview制作课程表实例

这篇文章主要介绍了winform用datagridview制作课程表的方法,实例分析了WinForm实现课程表的结构、数据库及调用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#中winform控制textbox输入只能为数字的方法

这篇文章主要介绍了C#中winform控制textbox输入只能为数字的方法,包括使用keyPress事件限制键盘输入以及TextChanged事件限制粘贴等情况,来实现控制输入为数字的功能,需要的朋友可以参考下
收藏 0 赞 0 分享

C#省份城市下拉框联动简单实现方法

这篇文章主要介绍了C#省份城市下拉框联动简单实现方法,涉及字典的定义与索引的用法,是非常实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#处理MySql多个返回集的方法

这篇文章主要介绍了C#处理MySql多个返回集的方法,实现了对处理MySql多个返回集进行封装,是非常实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#无限参数的写法

这篇文章主要介绍了C#无限参数的写法,通过循环遍历再结合paras.Add方法实现无限参数的功能,是比较实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#反射应用实例

这篇文章主要介绍了C#反射应用,实例分析了通过反射实现多系统数据库的配置方法,是比较实用的技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#窗体传值实例汇总

这篇文章主要介绍了C#窗体传值,实例形式汇总了静态变量传值、委托传值、对话框之间的传值等常见应用技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

C#把数组中的某个元素取出来放到第一个位置的实现方法

这篇文章主要介绍了C#把数组中的某个元素取出来放到第一个位置的实现方法,涉及C#针对数组的常见操作技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#中Equality和Identity浅析

这篇文章主要介绍了C#中Equality和Identity浅析,本文先是讲解了Equality和Identity的定义,同时讲解了判断两个对象等价性的4种方法,需要的朋友可以参考下
收藏 0 赞 0 分享

在Linux上运行C#的方法

这篇文章主要介绍了在Linux上运行C#的方法,实例分析了Linux平台下Mono软件包的应用技巧,以及在此基础之上的C#运行方法,具有一定的参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多