现请各位帮忙,小弟急需实现以下功能,但水平有限,现原意出三百块求代码。
功能如下在A机子实现两个程试同时读取和操作同一个EXCEL文件,如果A机子的EXCEL数据发生变发后,发送到B机子上并写入SQL中。有意者请与我联系我的MSN是[email protected]邮箱是[email protected].小弟刚毕业没什么钱,只能付这一点钱希望大家帮帮忙。

解决方案 »

  1.   

    EXCEL数据发生变发后,发送到B机子上并写入SQL中
    最关键的应该是这句,这功能用vba能写不?大顶一下
      

  2.   

    cancerser兄你能实那些功能呢?
      

  3.   

    小问一下 EXCEL是什么结构的?
      

  4.   

    没有结构规定,现在有两个问题要解决的1是A用户写在EXCEL上但没有保存的,B用户定时去读取,需要A用户的最新数据.2是当A用户在写B用户在读的时候就会发生冲突.
      

  5.   

    1A用户在写文件但没保存的时候 ,B用户在读这个文件的时候是不可能得到保存前的内容的,因为此时的修改应该保存在A用户的缓存中
    2A用户修改文件的时候,B用户应该能用只读权限打开。1我是不会解决了
    2如果只是读,可以把文件复制出来,或复制到内存读取这个副本。
      

  6.   

    能判断文件是否是打开的不?
    A机判断,打开.B机,判断,打开. 
    1.如果是打开的,拷取一个副本.并将机子的IP存入一个表(判断是否脏读的)
    2.A操作完后,保存,读这个表.发现有人读了,就发一个通知过去要求其重新取过.或是知道一个特定的位置,覆写过去.
      

  7.   

    对Excel版本兼容性有要求吗?
    比如只要能在excel 2003版跑就完工?
    我们做过税务报盘,技术上应该没问题!
      

  8.   

    用VBA写一个文件读取方式。。
    然后用,远程进程。读取共享文件。
    最后用动态加载。。实时更新。
    一切解决
    技术上没有难度。。而且非常的方便。只要你的东西运行。我就可以调用,并且实时监控。
      

  9.   

    csShooter,geraint999 两位兄弟能否给出例子呢?感激不尽
      

  10.   

    csShooter兄我现在用的是OFFICEXP
      

  11.   

    个人觉得不是技术问题,是思路问题。如果纯从技术角度看,好象实现不了,但换个思路,在A操作表格时,每做一次操作,
    都发一份副本到B上,覆盖掉B上原有的副本,
    B机器上写个服务,一有接收文件,就写入SQL
    就可以实现了只是这样机器比较忙,呵呵
      

  12.   

    我给你一个思路,
    我做过一个项目,
    c是客户端,有很多c, s是Server,只有一个
    当c的文件发生变化的时候,自动传送到s上,c和s各有一个程序在运行,
    c 监视本地filesystem, 并决定何种文件的更改(add,update)需要传送副本到s上,
    s上的程序负责接受和存储文件,这个项目我收了了xxxx块money
      

  13.   

    现在小弟找到一个方法,但不太稳定,就是采用DDE来共享EXCEL数据。但C#已经无DDE了,请问各位现在采什么技术,请贴出相关资料。mythofcynthia(Blue) 兄不知你想要什么样的价钱呢?请与我联系,我的MSN是[email protected]  email:[email protected]
      

  14.   

    使用COM啊新建一个项目,然后添加对Microsoft Excel 11.0 Object Library添加
    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窗口的内容时,你的程序就能捕捉到该事件
      

  15.   

    LHA(心动)  你的程序能捕捉EXCEL的改动,但会报被占用的错。
      

  16.   

    我现在用DDE能实现这种功能,请问有人用过DDE吗?
      

  17.   

    gdutmo(莫一冰) 请问你在哪里
      

  18.   

    难呀。如果要在officexp里实现,估计需要写个服务端和外挂才能实现了。
    如果在自己写的软件里实现,应该会简单点。但感觉300没有去搞了。(因为连我都不想接,估计没有会接了)
    在自己Microsoft Excel 11.0 Object Library,当发生更请求时,用SOCKET连接服务器,让后通知给其它客户端,其它客户端收到,立刻回应,打开相同文件的客户端全部更新刚才更新的内容。没有的就不更新了。当然还有点点细节问题,自己慢点想。总的来说是可以实现的,不过一个字-难(话也说回来,其实挣300也比较难)
    建议楼主自己写吧。如果有什么问题可以咨询一下,这里基本免费,呵呵,给点分就成了。
      

  19.   

    呵呵,谢谢各位,现在我基本上解决问题。不过现在遇到一个新问题。有人用过路透吗?现在我直接用DDE来跟路透连接,只是当路透上的数据是带*号的数字就不能显示出来,请问有人遇上这个种子问题吗?怎样解决呢?