我用OLE方法将StringGrid中的数据导出到Excel文件中,导出过程中不理它,一切正常;如果在导出过程中,我打开其他无关的Excel文件时,就会在这个文件中显示数据的写入过程,
同时也会新打开一个Excel文件(OLE正常写入的文件),
此时,这两个文件哪个在最前端,就往哪个文件中写数据,没写的地方就是空白。
请问有没有可以让他们之间互不影响的方法。谢谢!以下是相关代码:    ExcelApp := CreateOleObject('Excel.Application');
    WorkBook := CreateOleObject('Excel.Sheet');
    WorkBook := ExcelApp.WorkBooks.Add;    rowcount := StringGrid1.RowCount;
    colcount := StringGrid1.ColCount;    for ARow := 0 to rowcount - 1 do
    begin
      for ACol := 0 to colcount - 1 do
      begin
        ExcelApp.Cells[ARow + 1, ACol + 1].value := StringGrid1.Cells[ACol, ARow];
      end;
    end;    WorkBook.SaveAs(fileName);
    WorkBook.Close;
    ExcelApp.Quit;

解决方案 »

  1.   

    有。你将数据用#9分隔另存为XLS文件就可以了。效率极高,而且不用任何控件!
      

  2.   

    可以不用ExcelApp,只要符合excel文件结构规范就可以了。c#、vb.net和java的演示代码
    http://blog.csdn.net/jinjazz/archive/2008/08/04/2766356.aspx
    http://blog.csdn.net/jinjazz/archive/2008/08/01/2753869.aspx另外还可以用xml文件结构
    http://blog.csdn.net/jinjazz/archive/2008/08/04/2766203.aspx如果要用excelapp的com组件也可以不循环用ado写excel
    http://blog.csdn.net/jinjazz/archive/2008/08/06/2775725.aspx
    用querytable写excle
    http://blog.csdn.net/jinjazz/archive/2008/08/05/2770632.aspx
    方法很多,循环是最差的办法
      

  3.   

    to 1 楼 mwy654321 :谢谢!用#9分隔保存时,字符中以“0”开头的到xls中就没有“0”了,字符中类似“1-3”也会变成日期型的。
    to 2 楼 jinjazz :谢谢!我看Java部分的代码,但不知道16进制部分是什么意思?
      

  4.   

    我试着调了下Java代码中的方法,在非中文系统下,一些中文显示为“?”。
      

  5.   

    问题解决了,用的jxl实现对Excel的写操作。