欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现的Excel文件操作类实例

程序员文章站 2023-11-26 23:24:04
本文实例讲述了c#实现的excel文件操作类。分享给大家供大家参考,具体如下: using system; using system.data; using...

本文实例讲述了c#实现的excel文件操作类。分享给大家供大家参考,具体如下:

using system;
using system.data;
using system.data.oledb;
using system.text;
using system.io;
namespace hxh.api
{
 /// <summary>
 /// excelopration 的摘要说明。
 /// </summary>
 public class excelopration
 {
 oledbconnection conn;
 string connstring ;
 string filename;
 public excelopration()
 {
  //
  // todo: 在此处添加构造函数逻辑
  //
 }
 public excelopration(string _filename)
 {
  //
  // todo: 在此处添加构造函数逻辑
  //
  filename = _filename;
 }
 /// <summary>
 /// 打开连接
 /// </summary>
 private void open()
 {
  if(conn==null)
  {
  //在此处设置访问的数据库文件
  connstring = "provider=microsoft.jet.oledb.4.0;data source=" + filename +";extended properties=excel 8.0;";
  conn=new oledbconnection(connstring);
  conn.open();
  }
  else if(conn.state==system.data.connectionstate.closed)
  conn.open();
 }
 /// <summary>
 /// 关闭连接
 /// </summary>
 public void close()
 {
  if (conn != null)
  conn.close();
 }
 /// <summary>
 /// 导入数据到excel
 /// </summary>
 /// <param name="outtable"></param>
 public void importdata(datatable outtable)
 {
  createexcel(outtable);
  insertdata(outtable);
 }
 /// <summary>
 /// 创建excel文件和表头
 /// </summary>
 private void createexcel(datatable outtable)
 {
  stringbuilder sb = new stringbuilder();
  if(file.exists(filename))
  {
  file.delete(filename);
  }
  sb.append("create table sheet1(");
  foreach(datacolumn col in outtable.columns)
  {
  sb.append(col.columnname+" varchar,");
  }
  sb.remove(sb.length-1,1);
  sb.append(")");
  open();
  oledbcommand olecmd = new oledbcommand();
  olecmd.connection = conn;
  olecmd.commandtext = sb.tostring();
  olecmd.executenonquery();
  close();
 }
 /// <summary>
 /// 插入数据
 /// </summary>
 private void insertdata(datatable outtable)
 {
  oledbcommand olecmd = new oledbcommand();
  oledbparameter[] parm=new oledbparameter[outtable.columns.count];
  stringbuilder sb = new stringbuilder();
  sb.append("insert into sheet1 values(");
  for(int i=0;i<outtable.columns.count;i++)
  {
  parm=new oledbparameter("@p"+outtable.columns.columnname,oledbtype.varchar);
  sb.append("@p"+outtable.columns.columnname+",");
  olecmd.parameters.add(parm);
  }
  sb.remove(sb.length-1,1);
  sb.append(")");
  open();
  olecmd.connection = conn;
  olecmd.commandtext = sb.tostring();
  foreach(datarow row in outtable.rows)
  {
  for(int i=0;i<outtable.columns.count;i++)
  {
   parm.value = row[outtable.columns.columnname].tostring().trim();
  }
  olecmd.executenonquery();
  }
  close();
 }
 /// <summary>
 /// 从excel输出数据到数据集
 /// </summary>
 /// <returns></returns>
 public dataset outportdata()
 {
  dataset ds = new dataset();
  open();
  oledbdataadapter myadapter = new oledbdataadapter("select * from [sheet1$]", conn);
  myadapter.fill(ds,"input");
  close();
  return ds;
 }
 }
}

更多关于c#相关内容感兴趣的读者可查看本站专题:《c#操作excel技巧总结》、《c#程序设计之线程使用技巧总结》、《c#常见控件用法教程》、《winform控件用法总结》、《c#数据结构与算法教程》、《c#数组操作技巧总结》及《c#面向对象程序设计入门教程

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