高手进入:EXCEL内存读写,帮顶有分。



------
在进行EXCEL报表系统开发,每次将EXCEL表格从数据库中读出并在临时文件夹生成EXCEL文件再让EXCEL读取,保存时在读取为数据流存入数据库,中间有两次读写盘对速度有影响突然想到为什么不能从数据流直接注入EXCEL中呢?自己试验使用ReadProcessMemory、WriteProcessMemory连内存数据也没读到,请高人帮忙。
目前最高100,发帖后再加分或别外开贴加分。
------
EXCEL有特殊格式,你在内存如何读写
  
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码) 

http://feiyun0112.cnblogs.com/
------
帮顶,学习
------
引用 1 楼 feiyun0112 的回复:
EXCEL有特殊格式,你在内存如何读写

*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)

http://feiyun0112.cnblogs.com/

------
没有试过读取内存中的数据,学习!
------
没明白LZ所说

------
顶下,,
------

------
注入到EXCEL进和读出EXCEL内存数据流之间有数据操作吗?

------
没,即使有操作也是使用标准的EXCEL文件的数据流进行。
------
你就是说
1、从数据库读取数据
2、保存到EXCEL文件
3、从EXCEL文件读取数据
4、保存到数据库
不知是否是上面的流程?
------
引用 10 楼 outou 的回复:
你就是说 
1、从数据库读取数据 
2、保存到EXCEL文件 ----- 在EXCEL进程中加载(打开文件)
3、从EXCEL文件读取数据 ----在EXCEL进程中读出数据(保存工作簿为数据流)
4、保存到数据库 
不知是否是上面的流程?

------
帮顶。。。给分。呵呵
------
根据站点所在机器的EXCEL版本替换上面的版本
------
谢谢楼上的,我不时要向数据库导入、导入EXCEL文件,我是要在EXCEL进程中得到或加载工作簿数据流。
------
帮顶有分么?那就顶一个。
------

------
帮顶+学习
------
不知道怎样读取在内存中的EXCEL数据流,只知道文本流。不懂!
学习+接分 o(∩_∩)o...哈哈
------
我猜测,是利用读取二进制文件,然后分析文件格式,最后在流中加入数据。
------
谢谢楼上的哥们,EXCEL文件的读写已经实现(使用Aspose.Cells.dll速度超快),但将内存数据读出或注入EXCEL进程我想非常难。看多数的游戏修改工具都只是修改了个别内存地址数据而我想注入到EXCEL进程的数据长度是未知的,我本职是建筑,编写程序是业余爱好再说VS对底层进行了封装让我这种人也可以轻松的建起空中楼阁而无需去了解底层诸如:内存地址、位操作、指针、链表...
工程项目即将开工,今年还要去考一级建造师用于编程的时间不多,希望有能力的朋友予以协助。
哦,楼上的哥们:看你的相片人比较消瘦,注意保护身体。
------
楼主精神可嘉,向您学习了。
------
LZ很真诚啊...学习了~~
------
不懂 帮up
------


联系人: 梁平丽(责任编辑)

投稿信箱:chinakjzh@126.com(注.中国科技纵横投稿)

编辑部电话:010--80955582(转683)

咨询电话: 13041201895  

工作QQ: 909302841  

《中国科技纵横》编辑部
------
帮顶 学习下
------
vb 很久没用。。帮顶。。。UP
------
up
------
帮顶,jf
------
学习
------
帮顶~~~
------
引用 10 楼 outou 的回复:
你就是说
1、从数据库读取数据
2、保存到EXCEL文件
3、从EXCEL文件读取数据
4、保存到数据库
不知是否是上面的流程?

------
up!!!!
------
帮顶,学习
------
顶,我做过exel导入sql
很好做,再导到内存里比较麻烦吧!~
------
up
------
UP,学习一下。
------
好多朋友误解了楼住的意图,我现在也遇到它同样的问题,只是我是针对WORD文件。
楼住的意思是在系统中要把EXCEL文件保存到SQL数据库中,注意,是文件,是把整个EXCEL文件以流的形式写入一个SQL二进制字段,读出的时候要先把保存在二进制字段中的EXCEL文件通过流读出来,再写成一个本地磁盘上的一个EXCEL文件,最后通过VB.NET打开OFFICE 的 EXCEL系统来处理这个EXCEL文件,处理完毕,再通过流形式把这个磁盘上的EXCEL文件保存到二进制字段中,现在的问题是,如何做到不要使用中间过渡的磁盘文件,把这个过渡文件“存放在”内存中处理,一则速度快二则系统更加“高水准”。不知道楼主是否是我这意思?

我想能否通过以前我们在DOS时代用过的把内存虚拟成一个磁盘的功能来运作?

------
引用 45 楼 fujiandragon 的回复:
好多朋友误解了楼住的意图,我现在也遇到它同样的问题,只是我是针对WORD文件。
楼住的意思是在系统中要把EXCEL文件保存到SQL数据库中,注意,是文件,是把整个EXCEL文件以流的形式写入一个SQL二进制字段,读出的时候要先把保存在二进制字段中的EXCEL文件通过流读出来,再写成一个本地磁盘上的一个EXCEL文件,最后通过VB.NET打开OFFICE 的 EXCEL系统来处理这个EXCEL文件,处理完毕,再通过流形式把这个磁盘上的EXCEL文件保存到…

------
学习中!~~
------
通读楼主的要求,我突然想到ShellExecute函数,不知可行否。
------
excel的进程应该不是那么好控制的哦,出去安全等的考虑ms肯定有保护加密乱七八糟的措施吧``
我觉得ms肯定只会让你在他认为相对安全的环境里对excel表格进行操作..
------
能不能考虑通过剪贴板来处理?
------
帮顶
------
路过,帮顶
------
学习一下啦
------
引用 50 楼 fujiandragon 的回复:
能不能考虑通过剪贴板来处理?

------
UP
------
学习下。
------
为什么还要保存文件到磁盘呢
------
引用 58 楼 rcbblgy 的回复:
为什么还要保存文件到磁盘呢

------
晕啊,ls的那位啊
codeproject上的代码就不要贴出来了,浪费版面,直接贴地址就成
我平时收集的一些codeproject上操作office的文章
http://www.codeproject.com/KB/office/Generating_Word_Reports.aspx
http://www.codeproject.com/KB/aspnet/ExcelShtAndChrt-In-aspx.aspx
http://www.codeproject.com/KB/grid/DataSetMagic.aspx
http://www.codeproject.com/KB/office/excelxmllibrary.aspx
http://www.codeproject.com/KB/office/excelxmlspreadsheet.aspx
http://www.codeproject.com/KB/vb/FormulaEngine.aspx
http://www.codeproject.com/KB/cpp/ExcelListToXml.aspx
http://www.codeproject.com/KB/office/Data_Extract.aspx
http://www.codeproject.com/KB/office/excelxmlreport.aspx
http://www.codeproject.com/KB/dotnet/Exceller.aspx
http://www.codeproject.com/KB/office/Excel_DataReader.aspx
http://www.codeproject.com/KB/vb/Excel_Connectivity.aspx
http://www.codeproject.com/KB/office/excel_using_oledb.aspx
http://www.codeproject.com/KB/office/excel2xml.aspx

因为我平时基本是用xml来操作滴,所以上面多是一些和xml相关的东西,如果lz想要其他方面的,直接在codeproject里面直接搜"excel"关键字就成了(呵呵,今天我这里网速慢,我就不帮你找了)
------
楼上高手请指教,E文看不懂啊。汗颜。

------
恩,终于把codeporject打开了,lz可以看看这篇
http://www.codeproject.com/KB/office/Excel_DataReader.aspx

这一篇提供一个方法是从 流 中读取滴,不过我没看提供的coder不知道他是否是用excel.applicaion一类的东西读取的,本质上vsto和excel.application实际都应该可以直接读取 流,但是如果他是以这种方式实现的话,我到不建议用了,那种方式基本都会产生一个独立的excel进程,而且很难杀掉
------
通常来说,我自己的项目,基本都是使用把excel转制xml入库保存的,这样比较容易查找数据,像lz的要求直接读取流的方式,xml形式完全支持,而且excel<--->xml之间的格式转换,实际也并没有大多数人想象的那么困难
------
引用 62 楼 wanghui0380 的回复:
恩,终于把codeporject打开了,lz可以看看这篇
http://www.codeproject.com/KB/office/Excel_DataReader.aspx

这一篇提供一个方法是从 流 中读取滴,不过我没看提供的coder不知道他是否是用excel.applicaion一类的东西读取的,本质上vsto和excel.application实际都应该可以直接读取 流,但是如果他是以这种方式实现的话,我到不建议用了,那种方式基本都会产生一个独立的excel进程,而且很难杀掉

------
wodingding
------
wozaiding

------
学习了!
------
学习了
------
看的迷糊啊
------
up
------
顶 给分
------
貌似很深奥
------

------
VB,基本上只会VBA了
------
路过,先顶一个再说!
------
其实你把那两个步骤去掉就是了
------
学习,回帖是种美德。
------
帮顶
------
汗...不会
------
用java的poi-3.0.1-FINAL-20070705.jar做过一个.

------
如果只是想从内存经过,而不写磁盘,File有一个派生类,MemFile,可以直接写到内存,读写很快。并且它是一个文件。
------
顶了,但是不懂。。。
------
应该可以把整个文件加载到内存中,对内存中的文件操作。
------
引用 81 楼 mengzulin 的回复:
用java的poi-3.0.1-FINAL-20070705.jar做过一个.

------
不会,帮顶
------
我以前做过直接把excel内容读到内存中,最后用datagrid显示内容。只是excel内容比较简单,没有复杂对象。不是用数据库方式读取excel的。
------
up!
------
牛角尖,没有意义的事情去费这个脑子干嘛,少一次磁盘存取你以为会快?
小心内存溢出,而且excel等软件,在编辑时是自动存临时文件的,磁盘操作还是省不了的。
------
引用 90 楼 linlexing 的回复:
牛角尖,没有意义的事情去费这个脑子干嘛,少一次磁盘存取你以为会快?
小心内存溢出,而且excel等软件,在编辑时是自动存临时文件的,磁盘操作还是省不了的。

------
学习一下,帮忙顶了~~~还真的不是很清楚哦~~
------
up
------
如果有一次性大量类似操作,能因为直接从内存读取快的100毫秒而产生数分钟以上的差距,那么就用内存虚拟磁盘~~

fujiandragon 同学~IsolatedStorage不是说独立文件存在内存里,独立存储还是在磁盘上,在特定文件夹中,主要是为了安全性考虑,而加入的机制。只要注入silverligh或其他没有访问文件系统权限的应用也可以在客户端通过IsolatedStorage保存数据。 但这不是lz需要的。
------
另外~lz,要不,你别用ADO.NET来操作数据了,该用ADO吧,Excel的COM对象直接有CopyFormRecordSet方法- -||
------
挣分来的,无视我吧!
------
帮顶 顺便接分
------
C++ 可以用 BasicExcel
http://blog.csdn.net/DavidHsing/archive/2009/06/01/4231592.aspx
------
楼主很有思想,继续观注学习中……
桂ICP备07017180号