C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel
- 其实想在datagridview中显示excel表格中的数据跟读取数据库中的数据没什么差别,只不过是创建数据库连接的时候连接字段稍有差别。
private void btnShow_Click(object sender, EventArgs e)
{
OpenFileDialog fd = new OpenFileDialog();//首先根据打开文件对话框,选择excel表格
ofd.Filter = "表格|*.xls";//打开文件对话框筛选器
string strPath;//文件完整的路径名
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
strPath = ofd.FileName;
string strCon = "provider=microsoft.jet.oledb.4.0;data source=" + strPath + ";extended properties=excel 8.0";//关键是红色区域
OleDbConnection Con = new OleDbConnection(strCon);//建立连接
string strSql = "select * from [Sheet1$]";//表名的写法也应注意不同,对应的excel表为sheet1,在这里要在其后加美元符号$,并用中括号
OleDbCommand Cmd = new OleDbCommand(strSql, Con);//建立要执行的命令
OleDbDataAdapter da = new OleDbDataAdapter(Cmd);//建立数据适配器
DataSet ds = new DataSet();//新建数据集
da.Fill(ds, "shyman");//把数据适配器中的数据读到数据集中的一个表中(此处表名为shyman,可以任取表名)
//指定datagridview1的数据源为数据集ds的第一张表(也就是shyman表),也可以写ds.Table["shyman"] dataGridView1.DataSource = ds.Tables[];
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);//捕捉异常
}
}
}
运行结果如下:

2.导出DataGridView中的数据到Excel的方法:
public void ToExcel(DataGridView dataGridView1)
{
try
{
//没有数据的话就不往下执行
if (dataGridView1.Rows.Count == )
return;
//实例化一个Excel.Application对象
Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); //让后台执行设置为不可见,为true的话会看到打开一个Excel,然后数据在往里写
excel.Visible = true; //新增加一个工作簿,Workbook是直接保存,不会弹出保存对话框,加上Application会弹出保存对话框,值为false会报错
excel.Application.Workbooks.Add(true);
//生成Excel中列头名称
for (int i = ; i < dataGridView1.Columns.Count; i++)
{
if (this.dataGridView1.Columns[i].Visible==true)
{
excel.Cells[, i + ] = dataGridView1.Columns[i].HeaderText;
} }
//把DataGridView当前页的数据保存在Excel中
for (int i = ; i < dataGridView1.Rows.Count - ; i++)
{
System.Windows.Forms.Application.DoEvents();
for (int j = ; j < dataGridView1.Columns.Count; j++)
{
if (this.dataGridView1.Columns[j].Visible==true)
{
if (dataGridView1[j, i].ValueType == typeof(string))
{
excel.Cells[i + , j + ] = "'" + dataGridView1[j, i].Value.ToString();
}
else
{
excel.Cells[i + , j + ] = dataGridView1[j, i].Value.ToString();
}
} }
} //设置禁止弹出保存和覆盖的询问提示框
excel.DisplayAlerts = false;
excel.AlertBeforeOverwriting = false; //保存工作簿
excel.Application.Workbooks.Add(true).Save();
//保存excel文件
excel.Save("D:" + "\\KKHMD.xls"); //确保Excel进程关闭
excel.Quit();
excel = null;
GC.Collect();//如果不使用这条语句会导致excel进程无法正常退出,使用后正常退出
MessageBox.Show(this,"文件已经成功导出!","信息提示"); }
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示");
} }
C#读取Excel表格数据到DataGridView中和导出DataGridView中的数据到Excel的更多相关文章
- Excel表格导入Mysql数据库,一行存入多条数据的前后台完整实现思路(使用mybatis框架)
现在有一张Excel表格: 存入数据库时需要这样存放: 现在需要将Excel表格做处理,将每一行拆分成多条数据存入数据库. 1.首先在前台jsp页面画一个按钮:,加入点击事件: <td styl ...
- python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图
python制作简单excel统计报表3之将mysql数据库中的数据导入excel模板并生成统计图 # coding=utf-8 from openpyxl import load_workbook ...
- 制作的excel表格如何放到微信公众号文章中?
制作的excel表格如何放到微信公众号文章中? 我们都知道创建一个微信公众号,在公众号中发布一些文章是非常简单的,但公众号添加附件下载的功能却被限制,如今可以使用小程序“微附件”进行在公众号中添加附件 ...
- 导出网页中的table到excel
导出网页中的table到excel的两种简便方法: 1. 纯 JavaScript 方法,缺点只支持IE浏览器 var elTable = document.getElementById(" ...
- jsp+servlet+poi导出数据库中的数据
index.jsp: <a href="POIout">简单导出数据</a> <a href="POIoutTemplate"&g ...
- SQL语句的使用,SELECT - 从数据库表中获取数据 UPDATE - 更新数据库表中的数据 DELETE - 从数据库表中删除数据 INSERT INTO - 向数据库表中插入数据
SQL DML 和 DDL 可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL). SQL (结构化查询语言)是用于执行查询的语法. 但是 SQL 语言也包含用于更新. ...
- Unity 3D读取Excel表格、导入信息、导出Json
Unity 3D读取/导入Excel表格 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar ...
- c#导出ListView中的数据到Excel表格
1.添加组件:Microsoft.Office.Interop.Excel 步骤:右键点击“引用”--->添加引用--->COM--->Microsoft.Office.Intero ...
- (最全最灵活地)利用Jxl工具包实现Excel表的内容读取 、写入(可向已有表中追加数据)
1.引子 (1)读取 Jxl工具比较强大,可以方便地实现Excel表的读取和写入.另一款工具Poi也具有相似的功能,并且功能更多,运用也相对复杂.Poi读取Excel表内容时,需要先判断其内容格式,如 ...
随机推荐
- Semaphore
信号量玩的也是aqs的state. package com.hust.grid.leesf.semaphore; import java.util.concurrent.Semaphore; clas ...
- ArcGIS 10与ArcEngine 10安装及破解
1 2 3 4 5 分步阅读 一键约师傅 百度师傅高质屏和好师傅,拯救你的碎屏机 百度经验:jingyan.baidu.com 现在常见的破解方法在下面的地址中已经详细附图说明了,但是这种破解方法,想 ...
- Git Merge Commit忘了选分支?数据丢失? 刚刚做的都丢失了?别急!
1.打开终端,进入到对应的git 目录,也就是你的项目目录. 2.然后输入 git reflog,找到自己commit的版本 3.根据对应的编码输入指令,如:git checkout e53fa44( ...
- 浅谈Margin和Padding值设置成百分数的布局
转自:问说网http://www.uedsc.com/discussion-margin-and-padding-values.html Margin和Padding是我们在网页设计经常使用到的CSS ...
- mac系统下mysql开机启动总是3307
修改了mysql的my.cnf可还是不行,启动后就是3307,必须关掉再启动. 觉得可能是mac系统在哪里写死了开机启动项. http://queforum.com/mysql/1012987-mys ...
- 阿里云分布式关系数据库DRDS笔记
1.Join左边的表查询数据越少,性能越好 2.广播表作为Join的驱动表 3.SQL的Limit优化 SELECT * FROM t_order o WHERE o.id IN ( SELECT i ...
- 1.javascript篇(基础)
js基础部分 js定义: 1.js是通过浏览器解析,然后由浏览器执行的一种脚本语言2.css控制样式,而js控制行为 基本格式: <script type="text/javascri ...
- 諾基亞定制的Android系統名為 Z Launcher
N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個 ...
- 开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎
战棋 SLG 游戏 SLG(Simulation Game)游戏是模拟游戏的简称.战棋类的SLG有两种:一种是 War Game 中的兵棋推演分支,常见的游戏有战争艺术3(TOAW3 — The Op ...
- Mysql5.6主从热备配置
数据库是应用系统的核心,为了保证数据库的安全采用主从热备是很常见的方法,也就是主数据库DDL.DML都将被同步到从数据库. 一. 实验环境 操作系统:windowsserver 2008 R ...