现请各位帮忙,小弟急需实现以下功能,但水平有限,现原意出三百块求代码。
功能如下在A机子实现两个程试同时读取和操作同一个EXCEL文件,如果A机子的EXCEL数据发生变发后,发送到B机子上并写入SQL中。有意者请与我联系我的MSN是[email protected]邮箱是[email protected].小弟刚毕业没什么钱,只能付这一点钱希望大家帮帮忙。
功能如下在A机子实现两个程试同时读取和操作同一个EXCEL文件,如果A机子的EXCEL数据发生变发后,发送到B机子上并写入SQL中。有意者请与我联系我的MSN是[email protected]邮箱是[email protected].小弟刚毕业没什么钱,只能付这一点钱希望大家帮帮忙。
最关键的应该是这句,这功能用vba能写不?大顶一下
2A用户修改文件的时候,B用户应该能用只读权限打开。1我是不会解决了
2如果只是读,可以把文件复制出来,或复制到内存读取这个副本。
A机判断,打开.B机,判断,打开.
1.如果是打开的,拷取一个副本.并将机子的IP存入一个表(判断是否脏读的)
2.A操作完后,保存,读这个表.发现有人读了,就发一个通知过去要求其重新取过.或是知道一个特定的位置,覆写过去.
比如只要能在excel 2003版跑就完工?
我们做过税务报盘,技术上应该没问题!
然后用,远程进程。读取共享文件。
最后用动态加载。。实时更新。
一切解决
技术上没有难度。。而且非常的方便。只要你的东西运行。我就可以调用,并且实时监控。
都发一份副本到B上,覆盖掉B上原有的副本,
B机器上写个服务,一有接收文件,就写入SQL
就可以实现了只是这样机器比较忙,呵呵
我做过一个项目,
c是客户端,有很多c, s是Server,只有一个
当c的文件发生变化的时候,自动传送到s上,c和s各有一个程序在运行,
c 监视本地filesystem, 并决定何种文件的更改(add,update)需要传送副本到s上,
s上的程序负责接受和存储文件,这个项目我收了了xxxx块money
using System.Reflection;
using System.Diagnostics;
using Excel = Microsoft.Office.Interop.Excel;然后在程序中添加代码://Excel Automation variables.
Excel.Application xlApp;
Excel.Workbook xlBook;
Excel.Worksheet xlSheet1, xlSheet2, xlSheet3;//Excel event delegate variables.
Excel.AppEvents_WorkbookBeforeCloseEventHandler EventDel_BeforeBookClose;
Excel.DocEvents_ChangeEventHandler EventDel_CellsChange;
private void UseDelegates()
{
//Start Excel and create a new workbook.
xlApp = new Excel.ApplicationClass();
xlBook = xlApp.Workbooks.Add( Missing.Value );
xlBook.Windows.get_Item(1).Caption = "Uses Delegate";
xlSheet1 = (Excel.Worksheet)xlBook.Worksheets.get_Item(1);
xlSheet2 = (Excel.Worksheet)xlBook.Worksheets.get_Item(2);
xlSheet3 = (Excel.Worksheet)xlBook.Worksheets.get_Item(3);
xlSheet1.Activate(); //Add an event handler for the WorkbookBeforeClose Event of the
//Application object.
EventDel_BeforeBookClose =
new Excel.AppEvents_WorkbookBeforeCloseEventHandler( BeforeBookClose);
xlApp.WorkbookBeforeClose += EventDel_BeforeBookClose; //Add an event handler for the Change event of both Worksheet objects.
EventDel_CellsChange = new Excel.DocEvents_ChangeEventHandler( CellsChange); xlSheet1.Change += EventDel_CellsChange;
xlSheet2.Change += EventDel_CellsChange;
xlSheet3.Change += EventDel_CellsChange; //Make Excel visible and give the user control.
xlApp.Visible = true;
xlApp.UserControl = true;
}private void CellsChange(Excel.Range Target )
{
//Called when a cell or cells on a worksheet are changed.
Debug.WriteLine("Delegate: You Changed Cells " +
Target.get_Address( Missing.Value, Missing.Value,
Excel.XlReferenceStyle.xlA1, Missing.Value, Missing.Value ) +
" on " + Target.Worksheet.Name);
}private void BeforeBookClose(Excel.Workbook Wb, ref bool Cancel )
{
//This is called when you choose to close the workbook in Excel.
//The event handlers are removed and then the workbook is closed
//without saving changes.
Wb.Saved = true;
Debug.WriteLine("Delegate: Closing the workbook and removing event handlers.");
xlSheet1.Change -= EventDel_CellsChange;
xlSheet2.Change -= EventDel_CellsChange;
xlSheet3.Change -= EventDel_CellsChange;
xlApp.WorkbookBeforeClose -= EventDel_BeforeBookClose;
}
然后添加一个Button按钮 在Button的Click事件里面添加: UseDelegates();------------------------
每当你改变该Excel窗口的内容时,你的程序就能捕捉到该事件
如果在自己写的软件里实现,应该会简单点。但感觉300没有去搞了。(因为连我都不想接,估计没有会接了)
在自己Microsoft Excel 11.0 Object Library,当发生更请求时,用SOCKET连接服务器,让后通知给其它客户端,其它客户端收到,立刻回应,打开相同文件的客户端全部更新刚才更新的内容。没有的就不更新了。当然还有点点细节问题,自己慢点想。总的来说是可以实现的,不过一个字-难(话也说回来,其实挣300也比较难)
建议楼主自己写吧。如果有什么问题可以咨询一下,这里基本免费,呵呵,给点分就成了。