我用cxGrid连接主从表,在导出excel的时候只能导出一个表的数据,要么是主表的,要么是从表的。请问有哪位高手可以帮在下解答这个问题?
解决方案 »
- 哪位推荐个数据库连接池控件
- 做人不能太陈晓!
- 菜鸟问题,我在一个窗体中建立的自定义过程,我怎么在其它窗体中调用.
- 急急!!!请问哪里有DevExpress QuantumGrid 3.22 for D7 下载???只有这点分了
- delphi外的问题
- 关于 自定义类型 中使用 string 的问题!
- 如何得到WebBrowser控件上的链接提示?up有分!
- 怎让窗口显示在最前面?
- Delphi2010 调用window的cmd命令行,得到返回信息全为乱码。怎么处理
- 关于com1接口的问题 ---------答对有分分
- 帮我看看,一个简单的问题
- 小弟看到非常奇怪的问题,不知怎么样解决,各位高手帮帮看看,分不够再开贴,在线等急.....
mail: [email protected]
procedure TzwcxTreeList.ExportToExcel;
var
SaveDialog: TSaveDialog;
fileName: string; Excel,
WorkBook,
WorkSheet: Variant; r,
c: Integer;
begin
if VisibleColumnCount <= 0 then begin
MessageBox(GetActiveWindow, '导出失败,表格数据为空', '警告提示', MB_ICONWARNING or MB_OK);
Exit;
end; try
Excel := CreateOleObject('Excel.Application');
except
on e: Exception do begin
MessageBox(GetActiveWindow, '导出失败,请先安装电子表格Microsoft Excel', '警告提示', MB_ICONWARNING or MB_OK);
Excel := null;
Exit;
end;
end; SaveDialog := TSaveDialog.Create(Self);
SaveDialog.Filter := 'Excel表格|*.xls'; if SaveDialog.Execute then
fileName := SaveDialog.FileName
else
Exit; try
WorkBook := Excel.Application.WorkBooks.Add;
WorkSheet := WorkBook.WorkSheets[1]; //列
for c := 0 to VisibleColumnCount - 1 do begin
WorkSheet.Cells[1].NumberFormat := '@';
WorkSheet.Cells[1, c + 1].Value := VisibleColumns[c].Caption.Text;
end; //行
for r := 0 to Count - 1 do begin
for c := 0 to VisibleColumnCount - 1 do begin
WorkSheet.Cells[r + 2, c + 1].Value := Nodes[r].Texts[getCOlIndex(c)];
end;
end; try
if WorkBook.SaveAs(fileName) then begin
MessageBox(GetActiveWindow, pchar('成功导出到文件' + fileName), '提示', MB_ICONINFORMATION or MB_OK);
end;
except
on e: Exception do begin
MessageBox(GetActiveWindow, '放弃保存', '提示', MB_ICONWARNING or MB_OK);
exit;
end;
end;
except
on e: Exception do begin
MessageBox(GetActiveWindow, PChar(e.Message), '警告', MB_ICONWARNING or MB_OK);
WorkBook.Saved := True;
WorkBook := null;
Excel.Quit;
Excel := null;
Exit;
end;
end; WorkBook.Saved := True;
WorkBook := null;
Excel.Quit;
Excel := null;
end;
DataController。导出到EXCEL,通过OLE方式,网上N多的代码。
你可以参考一下
http://community.csdn.net/Expert/topic/4988/4988584.xml?temp=.6824152
的代码。
象我说的:
从cxGRID里取数据,就是遍历cxGRID的View.DataController
从表的数据,就是遍历cxGRID的View.DataController.GetDetailDataController(i, 0),它也是一个DataController。把数据写到一个大的Variant数组里。然后把Variant数组里的数据一次性地写到Excel里就可以了。