Delphi7读取并用ListView打印输出Excel表中数据
我自己也是才开始学的,想做这么个功能在网上看了蛮多案例,感觉缺了很多细节,很多案例不能说是差不多吧,完全就是一模一样,属于是你抄我我抄他了。对新手不太友好,希望这个能帮助到你,也希望大佬多指点指点,有问题的话可以留言我经常在线。(有用的话麻烦点个赞,我是新手,也希望大佬们多多指点)
这是ListView组件所在的位置。
按钮我这里就不多说了Button的位置应该都知道。
这是我的窗体样式
上代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ComObj, ExtCtrls, Grids, DBGrids;
{ ComObj, ExtCtrls, Grids, DBGrids
这几个是我看了几个案例加的,具体作用我也不太清楚}
type
TForm1 = class(TForm)
Button1: TButton;
ListView1: TListView;
procedure Button1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{ $R *.dfm}
var
XlsRead:OleVariant;//这个是必备的
procedure TForm1.FormClick(Sender: TObject);
begin
//这两个是让你的ListView1显示表格的
ListView1.ViewStyle:=vsReport;
ListView1.GridLines:=True;
end;
{ 按钮 }
procedure TForm1.Button1Click(Sender: TObject);
var
listItems:TListItem;
{ 总行数 总列数 列 行}
rowcount, colcount, icol, irow:Integer;
atime:string;//变量
begin
try
XlsRead:=CreateOleObject('Excel.Application');
except
Exit;
end;
try
XlsRead.WorkBooks.Open('E:\aa.xlsx');//打开工作簿
rowcount:=XlsRead.worksheets[1].UsedRange.Rows.Count;//获取表总行数、
colcount:=XlsRead.worksheets[1].UsedRange.Columns.Count;//获取表总列数
atime:='';
for icol:=1 to colcount do//按行打印表中数据
begin
if icol=1 then //判断是否是标题行
begin
for irow:=1 to rowcount do//循环获取标题行
begin
ListView1.Columns.Add;//添加列
atime:=XlsRead.Cells[icol,irow].Value;//从xlsx中读取标题行数据
ListView1.Columns.Items[irow-1].Caption:=atime;//添加到数据项
end;
end else
begin
listItems:=ListView1.Items.Add;//添加一行
atime:=XlsRead.Cells[icol,1].Value;//获取表中第一列 数据
listItems.Caption:=atime;//打印第一列
for irow:=2 to rowcount do//从第二列开始循环添加
begin
atime:=XlsRead.Cells[icol,irow].Value;//读取表中 某行的所有列
listItems.SubItems.Add(atime);//按列添加数据
end;
end;
end;
finally
XlsRead.WorkBooks.Close;//关闭工作簿
XlsRead.Quit;//退出
XlsRead:=Unassigned;//网上看的说这样关闭的更干净
end;
end;
end.
运行结果:这里的蓝色表格样式其实就是改了一个背景颜色(Color)。
谢谢观看!