为什么用剪切板倒stringgrid的数据到excel只能倒前边的一点点?(100分)

  • 主题发起人 主题发起人 gz85521734
  • 开始时间 开始时间
G

gz85521734

Unregistered / Unconfirmed
GUEST, unregistred user!
以下代码是将StringGrid的内容通过剪切板倒到excel里边,但是倒出后却只有StringGrid的前十多条数据呀,奇怪

procedure QuickSaveToExcelFile;
var ExcelHWND : THandle; //handle for detect whether Excel had already open
ExcelApp : TExcelApplication;
ExcelWbk : TExcelWorkBook;
ExcelSht : TExcelWorkSheet;
SaveDialog : TSaveDialog;
ExcelOpened : Boolean;
i,j : integer;
StringTemp : String;
begin
ExcelApp := TExcelApplication.Create(nil);
ExcelApp.Connect;
ExcelWbk := TExcelWorkBook.Create(nil);
ExcelWbk.ConnectTo(ExcelApp.Workbooks.Add(EmptyParam,0));
ExcelSht := TExcelWorkSheet.Create(nil);
ExcelSht.ConnectTo(ExcelWbk.Worksheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _worksheet);
ExcelSht.Columns.AutoFit;
StringTemp:='';
for i := 0 to StringGrid.ColCount - 1 do
begin
for j := 0 to StringGrid.RowCount - 1 do
StringTemp := StringTemp + StringGrid.Cells[j,i] + #9;
StringTemp := StringTemp + #13;
end;
clipboard.Clear;
clipboard.Open;
clipboard.astext := StringTemp;
clipboard.Close;
ExcelSht.paste;
//弹出保存窗口
SaveDialog := TSaveDialog.Create(nil);
SaveDialog.Filter := 'Excel Files|*.xls';
if SaveDialog.Execute then
ExcelSht.SaveAs(SaveDialog.FileName);
//释放控件
SaveDialog.Free;
ExcelSht.Disconnect;
ExcelWbk.Close;
ExcelWbk.Disconnect;
ExcelApp.Disconnect;
ExcelSht.Free;
ExcelWbk.Free;
ExcelApp.Quit;
ExcelApp.Free;
end;
 
做完后在Excel 中手工按一下粘贴,看是什么情况
或在记事本中粘贴是什么情况。
再跟踪一下 StringTemp 是否完整。
 
看过了,粘贴在记事本,就是只有前边的是几条,其实加起来也没多少东西,
剪切板不可能不够大呀,不会是String的长度限制吧?
 
呵呵,自己解决了,应该是

for i := 0 to StringGrid.RowCount - 1 do
begin
for j := 0 to StringGrid.ColCount - 1 do

超低级错误
 
to gz85521734
我试验了你的代码,为什么导出的内容是乱码呢?你遇到这个问题了吗?
 
后退
顶部