如何实现将将Excel表格数据,粘贴到 StringGrid上来(200分)

  • 主题发起人 主题发起人 秦人
  • 开始时间 开始时间

秦人

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在正在做一个数据输入界面;需要用户大量输入数据,目前采用StringGrid做为数据输入控件;
我想实现 用户直接从Excel表将大量数据直接复制粘贴到StringGrid,提高省去用户输入效率;
问:如何实现,请给出建议,最好有代码;谢谢;
 
最好有钱。
 
DELPHI有这些控件
 
我这个代码是导出到文本文件中的,你改一下就行了,

procedure TL_DataFormatImportF.Excel2Txt(SrcFileName: string; DestFileName: string; WorkSheetIdx,
BeginRow, EndRow, BeginCol, EndCol: integer);
var
ExcelApp: Variant;
ExCelSheet: Variant;
F: TextFile;
TmpStr: Ansistring;
i, j: integer;
begin
try
//--
try
ExcelApp := CreateOleObject('Excel.Application'); //创建EXCEL对象
except
Application.MessageBox('没有安装EXCEL!', '提示', Mb_Ok or Mb_IconError);
Exit;
end;
ExcelApp.WorkBooks.Open(SrcFileName); //打开EXCEL文件
ExcelApp.WorkSheets[WorkSheetIdx].Activate; //当前活动的WORKSHEET
ExcelSheet := ExcelApp.WorkSheets[WorkSheetIdx]; //当前活动SHEET
ExcelApp.Visible := False; //不可见
//--
for i := BeginRow to EndRow do //开始行和结束行
begin
TmpStr := '';
for j := BeginCol to EndCol do
begin
if j = EndCol then //最后一列
begin
try
TmpStr := TmpStr + string(ExcelSheet.Cells.Item[i, j]);
except
end;
end
else //不是最后一列要加列分隔符
begin
try
TmpStr := TmpStr + string(ExcelSheet.Cells.Item[i, j]) + #9;
except
end;
end;
end; // END FOR J
TmpStr := StringReplace(TmpStr, #13#10, '', [rfReplaceAll]);
TmpStr := StringReplace(TmpStr, '''''', '', [rfReplaceAll]);
Writeln(F, TmpStr); //文本文件写一行数据
Gauge6.Progress := i;
end; //END FOR I
finally
Screen.Cursor := crDefault;
ExcelApp.Caption := '';
ExcelApp.WorkBooks.Close;
ExcelApp.Quit; //关闭 EXCEL
end;
end;
 
我指的不是导出; 我是想通过 按 Ctrl+V 可以将 Excel上复制来的数据,粘贴到StringGrid上去;
 
估计无法做到,如若你的EXCEL有合并列,该算粘贴到StringGrid哪儿格?
 
没有合并列的; 就是二维的 EXCEL表; 
 
导入简单点也很方便
或者你就别用StringGrid做为输入界面了 直接调EXCEL好了 那样他爱怎么操作就怎么操作
当然导入数据库的工作你就在后台进行
 
自由灵活,所见即所得的表格组件,开发环境下设计表格内容,独有的单据和Excel两种界面风格,可设计出各种类型的界面,配合强劲的打印功能,轻松解决自由界面和报表难题。其显著特性包括:
# 提供了单据, Excel ,Grid 三种界面风格。
# 开发环境下设计表格,所见即所得。
# 支持数据库和分组。
# 既可以作为普通表格使用,又可以作为数据感知组件使用,或者两者同时使用。
# 独特的双数据源连接,轻松实现单记录布局和主从表连接。
# 除了通过数据集本身的方法来访问数据库的记录之外,还可以通过读取单元格的Text属性来实现,这样就不必在数据集间来回移动记录。
# 支持unicode文本。
# 支持缩放打印。
# 支持缩放字体填充。
# 提供了列排序,移动行列,隐藏行列,增删行列等功能。
# 提供了 Excel 样式的过滤功能。
# 方便的查找对话框。
# 提供了单元格合并,单元格命名,只读单元格,锁定单元格等功能。
# 提供了列对象,用于控制整列单元格。
# 支持虚表,公式(包括自定义公式), RTF 格式文本,Ole 对象和图表。
# 提供了按钮、下拉框、复选框、单选钮、日期、超链接、数值类等多种输入方式。
# 支持整形、正整形、负整形、浮点数、正浮点数、负浮点数等输入方式。可自动处理千分位,可设置小数位数。
# 九种文本和图形对齐方式,还可通过单元格边距控制输出位置。
# 导入/导出 Excel 文件,相互粘贴数据。
# 提供了自动调整行高,垂直文本,字体旋转等输出功能。
# 可以设置单元格掩码,附有掩码编辑器。
# 设置单元格的 PasswordChar。
# 单元格内容字符数限制。
# 单元格支持图形,并且可以拉伸,层叠图形。
# 可以显示/隐藏单元格的边框、可以设置边框的类型、大小、颜色。
# 支持单元格斜线。
# 3D 外观的单元格。
# 设置单元格的光标和提示。
# 支持自绘画单元格。
# 设置固定行和列。
# 保存到文件和流。
# 提供了复制/粘贴区域功能。
# VCL 版本可以插入其它可视 VCL 组件。

http://www.anylib.com
 
好像不错,太贵了 。
 
我做过这个功能,方法很简单
因为excel的复制动作,不仅复制了excel格式的,还同时生成了文本格式,html格式和图片格式。比如你复制后粘贴到qq的聊天窗口,会发现粘贴的是一个图片。

所以,注册剪切板的html格式,然后分析html语法就行。
在excel2003下测试成功,其他低版本的excel没试
 
就是一个循环,就可以了。
 

Similar threads

后退
顶部