问题描述
一直以来都不会使用程序读写excel这两天在论坛里找到一些相关的资料,但是不全,也不能完全解决我的问题拿实际的来说读取一个表格内的数据,这个比较容易比如一个存有书名的表格里面有书名,价格,及出版年份可以先建一个类,例如我建一个类名为books,然后这个类具有一些特性,例如,name,price,publicyear等等然后建立实例数组,把表格内的数据逐行读进数组内即可之所以没有采用数据库是因为两个原因1数据库配置比较麻烦2数据库编程我还不太会,而小数据存储和维护excel更方便所以以下不再对数据库进行讨论但是如何写入excel呢?以下是我在找到的一些方法DimxlAsObjectDimxbookAsObjectDimxsheetAsObjectxl=CreateObject("excel.Application")xbook=xl.workbooks.addxsheet=xbook.worksheets(1)xsheet.cells(1,1).value="helloworld"
简单来讲就是把这是将helloworld写入A1单元格的方法现在问题来了1,在没有关闭该表格的情况下,如何在表格内新增一行数据?假如写入的数据较多,不知道该表格当前已经写到多少行了,怎么办?2,数据写完以后,怎么保存这个表格?顺便说明一下,我现在所采用的是vs2012进行编写的程序
解决方案
解决方案二:
假设内容都写在第一列dimiasInteger=1DoWhileNotIsNothing(xsheet.cells(i,1).value)i=i+1Loop这是笨办法,我也不知道有没有更好的。保存用xbook.SaveAs("文件名.xlsx")
解决方案三:
1数据库配置比较麻烦这个观点我不赞同,数据库配置麻烦只在一些大型的关系型数据库,例如Oracle,SQLSERVER,MYSQL,DB2等,但小型数据库就不会,例如Access只需要安装Office组件即可(就这点我也觉得麻烦),根据楼主的描述我推荐楼主使用SQLite数据库,不需要配置连安装环境都不要2数据库编程我还不太会,而小数据存储和维护excel更方便楼主只需要简单的增删改查,数据库的操作只要会简单的T-SQL就可以,excel简单操作确实方便,但是涉及到大量的增删改查时,还是数据库方便,况且只要会找度娘,简单的操作数据库的增删改查应该对于楼主没有什么大问题吧.excel的操作1-网上搜NOPI操作EXCEL2-使用微软封装的Excel操作类3-直接操作DataTable然后保存成Excel都可以满足楼主需要当然实现方式自己选择,源码网上大把大把的有
解决方案四:
lz,其实,Excel也算是数据库的一种,符合标准的话同样可以用SQL语句实现增删改查
解决方案五:
不懂VB,但会一点VBA,移植到VS中有一些变化。1.将工作表中的数据读入内存进行处理,很简单。Sublske()DimarrAsObjectDimwbAsWorkbookSetwb=GetObject("D:桌面(勿删)IP规划.xlsx")Setarr=wb.Sheets(1).UsedRangeActiveSheet.Range("d7").Value=arr(1,3)EndSub代码中,set在VS开发平台中好像是要去掉,但EXCEL的VBE编辑器中得加上,否则识别不了对象变量。大意就是将“IP规划.xlsx"这个工作簿中的第1个工作表当中,已经使用的区域usedrange的内容赋给了arr变量,这个时候arr变量就变成了一个二维数组,不需要用循环一个一个写入数据到变量中。与usedrange相似的还有currentRegion,这个就是行与列都为空围起来的区域。2.excel文件(工作簿)可以当成数据库文件来处理,在使用前建立与工作簿的连接,然后就可以使用SQL语句了,本人使用过sql查询语句,其它的没有试验过。涉及语句:dimcnnasobjectSetcnn=CreateObject("adoDB.connection")cnn.Open"Provider=Microsoft.ACE.OLEDB.12.0;ExtendedProperties='Excel12.0Xml;HDR=YES';DataSource="&ThisWorkbook.FullName&";"代码中ThisWorkbook.FullName为带完整路径的EXCEL文件。3.在没有关闭该表格的情况下,如何在表格内新增一行数据?假如写入的数据较多,不知道该表格当前已经写到多少行了,怎么办?答:新增一行数据,最好是在数组变量中进行,两个数组变量进行数据对倒,如果在EXCEL文件中去插入行,写入数据,会有很多的数据移动,处理速度会很慢,不建议。如果是向一个已经有数据的工作表追加数据,可以写代码:Range("a65536").End(xlUp)进行定位,意思为从a65536单元格向上一直到有数据的那个单元格就停止。追加数据从这行开始Range("a65536").End(xlUp).row+1-----------------------------验证码怎么这么难输入,居然都是错的?
解决方案六:
去下载Aspose.Cells这个库,很好用