delphi如何将excel数据导入stringgrid1中,请贴详细代码和注释,谢谢!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi如何将excel数据导入stringgrid1中,请贴详细代码和注释,谢谢!!相关的知识,希望对你有一定的参考价值。

请注意的是:要贴出代码,其它的关于导入的原理不要说

参考技术A 假设你的数据集是ADOQuery1,连接excel,打开数据的原理就不说了。

procedure TForm1.Button1Click(Sender: TObject);
var
i,j: Integer;
begin
StringGrid1.ColCount:=ADOQuery1.FieldCount+1;
StringGrid1.RowCount:=ADOQuery1.RecordCount+1;
ADOQuery1.First;
for i:=1 to ADOQuery1.RecordCount do
begin
for j:=1 to ADOQuery1.FieldCount do
begin
StringGrid1.Cells[j,i]:=ADOQuery1.Fields[j-1].AsString;
end;
ADOQuery1.Next;
end;
end;
参考技术B 都是表格,导了有什么用处呢,两种表格中的任一格都称为单元格,都是通过(1,2)行列标来引用表述,表格中的内容可以通过赋值语句来更新. 参考技术C table1设置对应你的数据库中的表;
dataset1设置datsourcr=table1;
stringgrid1设置数据源dataset1。
so easy追问

我不需要导入进数据库,就是想将excel表里的数据导入stringgrid1中,我是用来做盘点功能用的。

追答

大哥,你的表必须通过odbc设置数据源,在delphi中是通过访问数据库访问表的。先学学连接数据库吧!

Delphi 中如何将EXCEL表导入到已知的数据库中,再进行操作

用DELPHI编,实现查询EXCEL表在数据库中的表是否存在,不存在则插入数据库表中,请DELPHI高手帮个忙

下面是一张EXCEL表格
客户代码 客户名称 客户税号 客户地址 客户开户银行账号
000001 abc 11111000 dasgadsgs 3241354325423
000002 dsf 32413454 dasadgdsgf 2314341413143
。。。
下面是一个用SQL语句创建的表
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[客户基本资料表](
[系统编号] [int] IDENTITY(1,1) NOT NULL,
[单位级别代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[单位名称] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[单位电话] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[所在省份代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[所在城市代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[邮政编码] [varchar](6) COLLATE Chinese_PRC_CI_AS NULL,
[通信地址] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[公司网址] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[公司类型代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[公司性质代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[所在行业代码] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[经营品牌] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[行业地位] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[其它描述] [text] COLLATE Chinese_PRC_CI_AS NULL,
[录入日期] [datetime] NOT NULL,
[录入人员代码] [varchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[公司传真] [varchar](255) COLLATE Chinese_PRC_CI_AS NULL,
[月开票量] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[可能购买的产品] [varchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[最后跟踪时间] [datetime] NULL,
[签约标志] [varchar](2) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_客户基本资料表] PRIMARY KEY CLUSTERED
(
[系统编号] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO
SET ANSI_PADDING OFF

CREATE TABLE [dbo].[税控导入资料](
[客户编码] [int] IDENTITY(1,1) NOT NULL,
[客户名称] [varchar](10) COLLATE Chinese_PRC_CI_AS NOT NULL,
[客户地址电话] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
CONSTRAINT [PK_税控导入资料] PRIMARY KEY CLUSTERED
(
[客户编码] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

请问如何根据上面两个用DELPHI设计一个程序实现下面的要求:
1、根据 excel表上的客户名称,判断一下 客户基本资料表中的单位名称是否存在,如果存在,那么就不做处理
2、如果不存在,那么,再根据客户名称,判断一下 税控导入资料中的 客户名称 是否存在
3、如果存在,则不做处理,如果不存在,那么将数据插入到 税控导入资料表中

参考技术A with cxSpreadBook_NbImport.ActiveSheet do
begin
TotalRowCount:= RowCount;
ProcessBarUtil.initProgressBar(0,TotalRowCount);
ProcessBarUtil.setProgressHintText(1,'保存邻区列表数据...');
for i:=1 to TotalRowCount-2 do
begin
for j:=0 to TotalColumCount-1 do
begin
valueStr:=GetCellObject(j,i).Text;
if valueStr='' then
break;
end;
try
DBUnit.DataModel.ImportUserNbList(valueStr);//DB方法
except
end;
end;
end;
参考技术B adoconnection连上excel 然后就像数据库那样操作。
进行取值 然后用另一个ado连到数据库来判断
参考技术C d

以上是关于delphi如何将excel数据导入stringgrid1中,请贴详细代码和注释,谢谢!!的主要内容,如果未能解决你的问题,请参考以下文章

delphi数据如何导出为excel

如何使用delphi将Excel文件导入Access数据库

如何在Delphi导入excel读取excel数据

导入excel数据到delphi (转)

delphi如何将excel数据导入stringgrid1中,请贴详细代码和注释,谢谢!!

用Delphi将数据导入到Excel并控制Excel