把Excel当成数据库操作
来源:互联网 发布:iso下载软件 编辑:程序博客网 时间:2024/04/28 14:54
近日老弟有个需求,要从excel中筛选数据出来。他只需要把筛选出来的数据放到另外一个Sheet里就行了。我的想法是用VBA 或者 c++。 c++是个人喜好,VBA是Office默认支持的,之间没有用过。于是Google了一把,发现还挺简单的,代码直接粘来用。用的是VBA 和 ODBC,微软自己的一套东西兼容性真是好。
事先当然是要有一个存了数据的excel文件
Emp IdName AgeDept 1Sumit20IT 2Raghav 13CS 3Gaurav 20MS 4Neel 30EEE 5Nemish 25IT 6Harish 22IT 7Bharath 21EEE 8Rishab 23Civil 9Gagan 27IT 10Abhishek 31Art
示例数据:
主要步骤:
设置目标文件为数据源 DSN
64位系统注意”ODBC driver could not be found”,调用正确的位置设置数据源[1][2] ,如 windows 7 64位使用:c:\windows\sysWOW64\odbcad32.exe
打开VB编辑器
我是从developer[3]标签打开的。Excel Options -> Popular -> Show Developer tab in Ribbon- 执行得出结果
下面的代码就可以了,都是数据库操作的常规代码:
目的是把Sheet1 里 A1到Z500里 Dept 为 ‘IT’ 的行筛选出来放到Sheet2中
Sub ReadDB()Dim mainWorkBook As WorkbookDim intRowCounterSet mainWorkBook = ActiveWorkbookintRowCounter = 2mainWorkBook.Sheets("Sheet2").Range("A2:Z100").ClearSet Connection = CreateObject("ADODB.Connection")Connection.Open "DSN=SumitODBC"strQuery = "SELECT * FROM [Sheet1$A1:Z500] where Dept = 'IT'"Set resultSet = Connection.Execute(strQuery)Do While Not resultSet.EOF mainWorkBook.Sheets("Sheet2").Range("A" & intRowCounter).Value = resultSet.Fields("Emp Id").Value mainWorkBook.Sheets("Sheet2").Range("B" & intRowCounter).Value = resultSet.Fields("Name").Value mainWorkBook.Sheets("Sheet2").Range("C" & intRowCounter).Value = resultSet.Fields("Age").Value mainWorkBook.Sheets("Sheet2").Range("D" & intRowCounter).Value = resultSet.Fields("Dept").Value intRowCounter = intRowCounter + 1 resultSet.movenextLoopresultSet.CloseEnd Sub
可以把代码保存成宏。我的结果是:
当然也有用 csv 的,导出为 csv 再操作。比如 ref [4], 如果 用MFC的话 还有 CDatabase Class, CDaoDatabase Class 可以研究下。
[1]https://excel-macro.tutorialhorizon.com/vba-excel-make-excel-file-as-odbc-sourcedatabase-using-microsoft-excel-driver/
[2]https://support.microsoft.com/en-us/kb/2721825
[3]https://support.office.com/en-us/article/Show-the-Developer-tab-or-run-in-developer-mode-1b4a8529-3094-432a-9a7f-53935089e5ed
[4] http://www.cplusplus.com/forum/windows/28103/
[5]http://excel-macro.tutorialhorizon.com/vba-excel-read-excel-workbook-as-database-using-odbc-source/
- 把Excel当成数据库操作
- 把MongoDB当成纯内存数据库使用
- 把 ElasticSearch 当成是 NoSQL 数据库
- 把 ElasticSearch 当成是 NoSQL 数据库
- 把ElasticSearch当成是NoSQL数据库
- 把 MongoDB 当成是纯内存数据库来使用
- ElasticSearch学习4_把 ElasticSearch 当成是 NoSQL 数据库
- 把命运当成使命
- 把自己当成别人、把别人当成自己、把别人当成别人、把自己当成自己
- 把自己当成别人、把别人当成自己、把别人当成别人、把自己当成自己
- 别把商业模式当成葵花宝典
- 不要把领导当成客户
- 把学习当成一个习惯
- 你把别人当成谁
- 把时间当成朋友观后感
- 利用java操作Excel表格(把Excel中的数据导入数据库中)
- 把STM32的JTAG下载引脚:JTDO、JTDI、JTCK 当成普通IO口进行操作
- 把 MongoDB 当成是纯内存数据库来使用(Redis 风格)
- java通过jdbc连接sqlite数据库进行CRUD操作
- poj1745Divisibility
- Struts2完成一次请求的过程
- 排序算法
- Lucene学习总结之二:Lucene的总体架构
- 把Excel当成数据库操作
- UVA-10881 - Piotr's Ants
- struts2的处理请求的全过程是什么
- C++set集合
- ActionMapper 是干什么用的?
- Caffe中learning rate 和 weight decay 的理解
- 【zzulioj 1894 985的方格难题】
- Servlet容器的概念
- 解决mac osx编译libevent找不到openssl目录的问题