• 从Excel导入信息在StringGrid显示


    1、控件:2个Button,1个label,1个edit,1个StringGrid,1个OpenDialog,1个PopuMenu

    2、双击‘......’按钮,选择文件路径

     1 //打开指定的文件
     2 OpenDialog1.InitialDir := ExtractFilePath(Application.ExeName) + '模板';
     3 OpenDialog1.filter := '文本文件(*.xls)|*.xls';
     4 OpenDialog1.DefaultExt := 'XLS';
     5 OpenDialog1.Title := '打开Excel文件';
     6 OpenDialog1.FileName := '';
     7 if OpenDialog1.Execute then
     8 begin
     9   edtFileUrl.Text := OpenDialog1.FileName;
    10 end
    11 else
    12 begin
    13   exit;
    14 end;

    3、双击‘读取’按钮

     1 procedure Tfrm4.Button2Click(Sender: TObject);
     2 var
     3   ExcelApp: Variant;  //Excel变量
     4   ExcelFiles: string; //打开的Excel文件名
     5   i, j: Integer;
     6   SheetNo: Integer;   //所在sheet页编号
     7 begin
     8   inherited;
     9 
    10   RzStringGrid.DefaultDrawing := True;
    11   if edtFileUrl.Text = '' then
    12   begin
    13     Application.MessageBox('请先选择导入文件!', '提示', MB_OK + MB_ICONWARNING);
    14     Exit;
    15   end;
    16   ExcelFiles := edtFileUrl.Text;//选择到的文件路径
    17   SheetNo := 1;//sheet编号
    18   ExcelApp := CreateOleObject('Excel.Application');
    19   ExcelApp.Visible := false;
    20   ExcelApp.WorkBooks.Open(ExcelFiles);
    21   ExcelApp.WorkSheets[SheetNo].Activate;//Excel第一个Sheet是活动页
    22   try
    23     try
    24       MaxRow := ExcelApp.WorkSheets[SheetNo].UsedRange.Rows.Count;    //所有行数
    25       MaxCol := ExcelApp.WorkSheets[SheetNo].UsedRange.Columns.Count;  //所有列数
    26       with RzStringGrid do
    27       begin
    28         ColWidths[2] := 100;//设置第二列的宽度,StringGrid列是从0开始的
    29       //StringGrid的行数
    30       RzStringGrid.RowCount := MaxRow - 1;//减去最后一行提示信息行
    31       //StringGrid的列数
    32       RzStringGrid.ColCount := MaxCol;
    33       //标题行
    34       RzStringGrid.FixedRows := 1;//设置标题行只有一行
    35       RzStringGrid.FixedCols := 0;
    36       for i := 1 to MaxRow - 1 do//读入数据,控制行
    37       begin
    38         for j := 1 to MaxCol do//读入数据,控制列
    39         begin
    40           //Excel表格的行和列是从1开始的,StringGrid的行和列是从0开始
    41           RzStringGrid.Cells[j-1, i-1] := VarToStr(ExcelApp.WorkSheets[SheetNo].Cells[i, j].Value);
    42         end;
    43       end;
    44     except
    45       on E: Exception do
    46       begin
    47         ShowMessage('异常类名称:' + E.ClassName + #13#10 + '异常信息:' + E.Message);
    48         Application.MessageBox('数据读入错误或者数据文件格式错误!', PChar(Application.Title), MB_OK + MB_ICONWARNING);
    49       end;
    50     end;
    51   finally
    52     ExcelApp.ActiveWorkBook.Close;
    53     ExcelApp.Quit;
    54     ExcelApp := Unassigned;
    55     PageControl1.ActivePage := TabSheet2;
    56   end;
    57 end;

    4、PopuMenu添加PopuMenu右键弹出事件

    1   //如果表格不为空或者表格的行数大于1(标题行当然不允许删)
    2   if (RzStringGrid <> nil) and (RzStringGrid.RowCount > 1) then 
    3   begin
    4     mniNDelRow.Enabled := True;//则允许删除选中行
    5   end
    6   else
    7   begin
    8     mniNDelRow.Enabled := False;//否则不允许
    9   end; 

    5、给PopuMenu添加一个右键的值,双击会弹出如下

    然后双击删除当前行:

    1   //如果表格不为空或者表格的行数大于1(标题行当然不允许删)
    2   if (RzStringGrid <> nil) or (RzStringGrid.RowCount > 1) then
    3   begin
    4     for i := RzStringGrid.row to RzStringGrid.RowCount - 1 do
    5       RzStringGrid.Rows[i] := RzStringGrid.Rows[i+1];//删除一行,把后一行往前挪一行
    6     RzStringGrid.RowCount := RzStringGrid.RowCount - 1;//将StringGrid的总行数减1
    7   end;

    6、与5同理,双击清空当前列表

    1    //定义一个integer类型的变量i
    2    //如果表格不为空或者表格的行数大于1(标题行当然不允许删)
    3    for i := 1 to RzStringGrid.RowCount -1  do  //如果不清表头则从1开始
    4    begin
    5      RzStringGrid.Rows[i].Clear;//清空行的同时调用删除行的方法
    6      mniNDelRowClick(Self);
    7    end;

    7、StringGrid的PopuMneu属性记得选择你添加的那个

    8、以下是StringGrid的属性,如果哪里不对,自己对照改下

     完了,就这些就可以读取Excel的内容到Stringgrid显示了

  • 相关阅读:
    iMX6Q开发板的EIM接口的配置可以与FPGA通讯-交换数据-最常用的接口配置
    大受喜欢安卓触控一体机连接云端数据化管理提供例程DEMO
    iTOP-4418开发板所用核心板研发7寸/10.1寸安卓触控一体机
    i.MX6ULL终结者Buildoot文件系统构建篇buildroot添加支持第三方软件
    所有教程为迅为原创-3399开发板资料更新了
    如果使用4412开发板那么怎么搭建和测试TFTP服务器
    iMX6ULL开发板Linux 4G通信实验EC20 4G模块配置
    iMX6ULL终结者Linux WIFI驱动实验rtl8723 Wifi联网测试
    iTOP4412开发板Android5.1.1移植教程
    迅为iTOP3399开发板人工智能(图像分类)
  • 原文地址:https://www.cnblogs.com/OSKnown/p/8920341.html
Copyright © 2020-2023  润新知