C#创建Excel文件并将数据导出到Excel文件
工具原料:
Windows 7,Visual Studio 2010, Microsoft Office 2007
创建解决方案
菜单》新建》项目》Windows窗体应用程序:
添加相关组件:
添加两个DataGridView,一个TextBox,两个按钮 ,如下图:
添加Excel资源:
C#创建Excel文件,这里实际上是从资源中提取一个事先创建好的Excel文件,文件提取成功后,使用OleDb方法连接Excel,向Excel文件中写入数据。
先在文件夹中新建一个Excel文件,在Sheet1表的第一行设置列名:
双击“Resources.resx”文件打开资源文件视图:
添加现有文件,选择刚刚创建的Excel文件
从资源中提取Excel文件
- string excelPath = AppDomain.CurrentDomain.BaseDirectory + "Excel" + DateTime.Now.Ticks + ".xlsx";
- if (System.IO.File.Exists(excelPath))
- {
- textBox1.Text += ("文件已经存在!");
- return;
- }
- try
- {
- //从资源中提取Excel文件
- System.IO.FileStream fs = new System.IO.FileStream(excelPath, FileMode.OpenOrCreate);
- fs.SetLength(0);
- fs.Write(Properties.Resources.Excel, 0, Properties.Resources.Excel.Length);
- fs.Close();
- fs.Dispose();
- textBox1.Text = "提取Excel文件成功!" + "\r\n";
- }
- catch (System.Exception ex)
- {
- excelPath = string.Empty;
- textBox1.Text += ("提取Excel文件失败:" + ex.Message);
- textBox1.Text += ("\r\n");
- Application.DoEvents();
- return;
- }
定义连接字符串
- //定义OleDB连接字符串
- string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";Extended Properties='Excel 12.0; HDR=yes; IMEX=10'";
- OleDbConnection conn = new OleDbConnection();
- conn.ConnectionString = strConn;
注意:连接字符串中IMEX的值使用的是10,如果是1或2,在执行Insert Into语句时就会报“操作必须使用一个可更新的查询”的错误。
在dataGridView1中显示Excel文件中的所有表的信息
- DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
- dataGridView1.DataSource = oleDt;
- dataGridView1.Show();
向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
- OleDbCommand cmd = null;
- try
- {
- //向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
- cmd = new OleDbCommand("Insert Into [Sheet1$] Values('abc', 'bac', '0', '123456', 'test','测试','aa')", conn);//(A,B,C,D,E,F,G)
- cmd.ExecuteNonQuery();
- cmd.ExecuteNonQuery();
- cmd.ExecuteNonQuery();
- cmd.ExecuteNonQuery();
- cmd.ExecuteNonQuery();
- }
- catch (System.Exception ex)
- {
- textBox1.Text += ("插入数据失败:" + ex.Message);
- textBox1.Text += ("\r\n");
- }
在dataGridView2中显示表"Sheet1"的内容,访问Excel的表的时候需要在表名后添加"$"符号
- cmd = new OleDbCommand("Select * From [Sheet1$]", conn);
- OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
- DataSet ds = new DataSet();
- adp.Fill(ds);
- dataGridView2.DataSource = ds.Tables[0];
遍历Schema的内容
- DataTable dt = conn.GetSchema();
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- textBox1.Text += dt.Columns[i].Caption;
- if (i + 1 < dt.Columns.Count)
- {
- textBox1.Text += ",";
- }
- }
- for (int j = 0; j < dt.Rows.Count; j++)
- {
- for (int i = 0; i < dt.Columns.Count; i++)
- {
- if (dt.Rows[j][dt.Columns[i]] != null)
- {
- textBox1.Text += dt.Rows[j][dt.Columns[i]].ToString();
- }
- else
- {
- textBox1.Text += "null";
- }
- if (i + 1 < dt.Columns.Count)
- {
- textBox1.Text += ",";
- }
- }
- textBox1.Text += ("\r\n");
- }
关闭Excel数据连接
- if (conn.State != ConnectionState.Closed)
- {
- try
- {
- conn.Close();
- }
- catch (System.Exception ex)
- {
- textBox1.Text += ("关闭Excel数据连接:" + ex.Message);
- textBox1.Text += ("\r\n");
- }
- }
打开文件目录
- System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);
C#创建Excel文件并将数据导出到Excel文件的更多相关文章
- 如何使用 Excel 对象将 DataGridView 数据导出到 Excel
转载出处:https://code.msdn.microsoft.com/How-to-insert-image-into-93964561 本项目阐述如何使用 Open XML SDK 将图像插入到 ...
- 将datagrid中数据导出到excel中 -------<<工作日志2014-6-6>>
前台datagrid数据绑定 #region 导出到excel中 /// <summary> /// 2014-6-6 /// </summary> / ...
- 使用PHPExcel将数据导出至Excel
安装类库 从GitHub上下载PHPExcel类库 地址:https://github.com/PHPOffice/PHPExcel 解压后将Classes文件夹移动到ThinkPHP的extend目 ...
- vb.net-三种将datagridview数据导出为excel文件的函数
第一种方法较慢,但是数据格式都比较好,需要引用excel的 Microsoft.Office.Interop.Excel.dll office.dll #Region "导出excel函数 ...
- 数据导出至Excel文件--好库编程网http://code1.okbase.net/codefile/SerializeHelper.cs_2012122018724_118.htm
using System; using System.IO; using System.Data; using System.Collections; using System.Data.OleDb; ...
- Qt中将QTableView中的数据导出为Excel文件
如果你在做一个报表类的程序,可能将内容导出为Excel文件是一项必须的功能.之前使用MFC的时候我就写过一个类,用于将grid中的数据导出为Excel文件.在使用了QtSql模块后,我很容易的将这个类 ...
- Pl/sql 如何将oracle的表数据导出成excel文件?
oracle将表数据导出成excel文件的方法 1)在SQL窗体上,查询需要导出的数据 --查询数据条件-- ; 结果视图 2)在查询结果的空白处,右键选择Copy to Excel 3) 查看导出e ...
- C#将数据集DataSet中的数据导出到EXCEL文件的几种方法
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.W ...
- VB将MSHFlexGrid数据导出到Excel文件通用功能
1.通用导出Excel功能. 2.将 MSHFlexGrid数据导出到Excel文件通用功能. 3.具体代码如下: '将下列代码保存到一模块文件中,调用方法:Export fgrid1,cd1 Pub ...
随机推荐
- CSS text-indent
text-indent 属性规定文本块中首行文本的缩进. 一个作用就是首行文本缩进,一般的文本都是首行缩进两个字符,这里就可以使用text-indent { text-indent: 2em; } 另 ...
- Build Error 6041: Internal build error
Note: Following content is reprinted from the Original article Flexera : Build Error 6041. Only for ...
- echarts雷达图
用echarts展现雷达图的定制 <!doctype html> <html> <head> <meta charset="utf-8"& ...
- DBA
一个公司的数据库系统也是由DBA 来进行管理的,它们的主要工作如下: l 安装和配置数据库,创建数据库以及帐户:l 监视数据库系统,保证数据库不宕机:l 收集系统统计和性能信息以便进行调整:l 发现性 ...
- apache开启gzip的方法
在Apache中开启gzip压缩方法为: 1. 在httpd.conf 或者博客根目录的.htaccess文件中加入如下规则(Apache服务器需要支持 mod_deflate) 本文出处参考:htt ...
- php文本操作方法集合
fgets和fputs.fread和fwrite.fscanf和fprintf 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函 ...
- 003.XE3包含了TPerlRegEx的单元
使用'|'替换所有的内容 代码: program Project1; {$APPTYPE CONSOLE} uses System.SysUtils, System.RegularExpression ...
- Vijos P1062 迎春舞会之交谊舞
题目链接:https://vijos.org/p/1062 题意:输入n(n <= 1500)个女生左边有多少个男生.每个女生都和她左边最近的男生跳舞. 输出每个女生到可以与之跳舞的男生之间有几 ...
- PL/SQL — 隐式游标
一.隐式游标的定义及其属性 定义 隐式游标由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性.其过程由oracle控制,完全自动化.隐式游标的名称是SQL,不能对SQL游标显式地执行OPE ...
- 一步步学习NHibernate(6)——ISession的管理
请注明转载地址:http://www.cnblogs.com/arhat 今天老魏那个汗啊,我的ThinkPad的电源线不通电了,擦啊.明天还得掏银子买一个!心疼啊,原装的啊.不过话说回来,已经用了将 ...