C#如何对Excel表格进行条件选择
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#如何对Excel表格进行条件选择相关的知识,希望对你有一定的参考价值。
我现在想把Excel表格的部分数据导入到我的软件里面(C#的WinForm平台开发的)。
我是按时间选择,选择某个日期的所有数据。
我的表格中,明明有我所选择的日期的数据。但是导出来的数据却是下面这样的:
我的部分相关代码如下:
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = " SELECT * FROM [" + name + "$] where 测试日期 = "+date;
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
ds = new DataSet();
myCommand.Fill(ds);
myConn.Close();
dataGridView1.Invoke((MethodInvoker)delegate
dataGridView1.DataSource = ds.Tables[0];
);
我把strCom换成
string strCom = " SELECT * FROM [" + name + "$] where 测试日期 in ( "+date+")";效果也一样
请问是怎么回事
可以取出,没问题。我是先看代码有问题没,没问题了才加的where条件。
追答时间类型的条件你加上#试试,where 测试日期 = #"+date +“#”
追问OK了,谢谢哈。你的方法可取。
本回答被提问者采纳 参考技术C date是字符串?还是日期对象啊?string strCom = string.Format(" SELECT * FROM [0$] where 测试日期 ='1'",name,date);
试试哈!!追问
是字符串。
我这么弄的:
string date = dateTP.Value.Date.ToShortDateString();//Convert to the 2015/5/11 format.
dateTP是dateTimePicker控件。
可能就是这个原因,应该是这个date出了问题。
哦!!
string date = dateTP.Value.ToString("yyyy/M/d");
string strCom = string.Format(" SELECT * FROM [0$] where 测试日期 ='1'",name,date);
用户名是啥东西的方法可取。
c#如何实现对表格(excel)的增删改查?
一、首先处理好数据库连接字串Excel2000-2003: string connStr = "Microsoft.Jet.Oledb.4.0;Data Source='c:\test.xls';Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
Excel2007: string connStr = "Microsoft.Ace.OleDb.12.0;Data Source='c:\test.xlsx';Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";
其中:
HDR ( Header Row )设置:
若指定值为Yes,代表 Excel 档中的工作表第一行是栏位名称
若指定值为 No,代表 Excel 档中的工作表第一行就是资料了,没有栏位名称
IMEX ( IMport EXport mode )设置
当 IMEX=0 时为"汇出模式",这个模式开启的 Excel 档案只能用来做"写入"用途。
当 IMEX=1 时为"汇入模式",这个模式开启的 Excel 档案只能用来做"读取"用途。
当 IMEX=2 时为"连结模式",这个模式开启的 Excel 档案可同时支援"读取"与"写入"用途。
二、进行表格数据的查询、插入和更新:
(假设Excel文件text.xls中存在Excel表单tree,有2列分别为id,name)
1、查询
String sql = "select id, name from [tree$]";
或
String sql = "select id, name from `tree$`;
2、插入
String sql = "insert into [tree$] (id,name) values(1,'testname');
3、更新
String sql = "update [tree$] set name='name2' where id=1;
4、数据的删除
在OleDB的连接方式下,不可以使用delete from 语句来删除某表中的某一条记录。确切的说,在此模式下,将无法删除表中的记录。即使用update语句将所有的字段写成null,打开excel文件后依然会发现保留了该空行,而且在使用oleDB连接进行查询时,依然会查询到这条空数据。 参考技术A
C# 操作Excel分很多种方法,有COM,有ODBC,但是如果你要更灵活的操作,建议使用第三方库,这里推荐几个:
1、NPOI
优点:开源,你可以到npoi的git镜像下载源代码来看;
缺点:如果使用普通接口,在Excel比较大的情况下可能造成内存溢出(当然有解决方案,具体就去看文档吧);
2、OpenXML
优点:微软出的,比较官方,和现在的offce格式兼容性比较好而且也开源,具体可以到Open-XML-SDK查看;
缺点:只支持 Excel 2007之后版本,而且需要对文件格式比较了解;
3、aspose.cells
优点:封装的比较好,内存处理上比npoi和openxml要好些,接口简单易用;
缺点:收费,免费版会在生成的 Excel 中写入 Aspose 标志;
4、自己解析格式
优点:更灵活,想干啥干啥;
缺点:要对excel格式了解的比较多,比较麻烦。
参考技术B office现在有新加的开发技术,vsto,就是基于c#的,虽然还是比较冷门,但是很多时候感觉比vba顺手。具体可以找刘永富老师的教程 参考技术C直接用Excel的类库来操作的话要容易的多,free spire.xls for .net这个免费Excel类库,中文站有很多教程示例可以参考,写得都比较详细
以上是关于C#如何对Excel表格进行条件选择的主要内容,如果未能解决你的问题,请参考以下文章