delphi XE LISTVIEW导出EXCEL


本文整理自网络,侵删。

 
1、调用

listtoexcel('abcd', jjd_list, 5);//第一个参数没什么用,随便写的。第二个参数就是LISTVIEW。第三个参数代表哪列是数值型。

2、代码

function listtoexcel(ttname: string; tt: TListView; num_num: integer): string;
var
  h, k, i: integer;
  Excelid: OleVariant;
  Y, X: integer;
  Temsheet: OleVariant; // 工作薄
  FWorkBook: OleVariant; // 工作表
  // FExcel:OleVariant; //excel应用程序
begin
  try
    Excelid := CreateOLEObject('Excel.Application');
  except
    Application.MessageBox('Excel没有安装!', '提示信息', MB_OK + MB_ICONASTERISK +
      MB_DEFBUTTON1 + MB_APPLMODAL);
    Exit;
  end;
  try
    k := tt.Items.Count;
    h := tt.Columns.Count;
    Excelid.Visible := False; // 是否显示
 
    FWorkBook := Excelid.WorkBooks.Add(-4167); // 新的工作表
    // Temsheet := FWorkBook.Worksheets.Add;
    // Temsheet.Select;
 
    // Temsheet.Name:='';
    // Temsheet.Columns[1].ColumnWidth:=30;//设置列宽度
    // Temsheet.Columns[2].ColumnWidth:=30;
 
    // Temsheet:=Excelid.WorkBooks.Add;
    // Excelid.worksheets[1].range['A1:c1'].Merge(True);
    // Excelid.WorkSheets[1].Cells[1, 1].Value := ttname;
    // Excelid.worksheets[1].Range['a1:a1'].HorizontalAlignment := $FFFFEFF4;
    // Excelid.worksheets[1].Range['a1:a1'].VerticalAlignment := $FFFFEFF4;
    // 写表头,以LISTVIEWS列名为准
    for i := 0 to h - 1 do
    begin
      Excelid.Worksheets[1].Cells[1, i + 1].Value :=
        tt.Columns.Items[i].Caption;
 
    end;
    // Temsheet:=FWorkBook.Worksheets.Add;
    { Temsheet.Name:='利润统计';
      Temsheet.Select;
      Temsheet.Columns[1].ColumnWidth:=4;//设置列宽度
      Temsheet.Columns[2].ColumnWidth:=10;
      Temsheet.Columns[3].ColumnWidth:=16; }
    // Excelid.WorkSheets[1].Activate;
    // 开始写内容
    // Excelid.ActiveSheet.Columns[2].ColumnsWidth := 5;
    // Excelid.ActiveSheet.Columns[1].Width := 20;
    // Excelid.WorkSheets[1].Columns[1].ColumnsWidth := 20;
    for X := 2 to k + 1 do
    begin
      Excelid.Cells.item[X, 1].numberformatlocal := '@';
      Excelid.Worksheets[1].Cells[X, 1].Value := tt.Items.item[X - 2].Caption;
      for Y := 2 to h do
      begin
        if num_num = Y then
        begin
          Excelid.Cells.item[X, Y].numberformatlocal := '0.00_ ';
        end
        else
        begin
          Excelid.Cells.item[X, Y].numberformatlocal := '@';
        end;
 
        Excelid.Worksheets[1].Cells[X, Y].Value := tt.Items.item[X - 2]
          .SubItems[Y - 2];
      end;
    end;
  except
    // Application.MessageBox('导入数据出错!请检查文件的格式是否正确!', '提示信息', MB_OK + MB_ICONASTERISK + MB_DEFBUTTON1 + MB_APPLMODAL);
  end;
  Excelid.Visible := True; // 是否显示
end;
 

原文链接:https://blog.csdn.net/weixin_44387646/article/details/90402644

相关阅读 >>

Delphi 实现检测线程类tthread是否结束

Delphi fmx窗体中控件对齐方式介绍

Delphi 中相对路径与绝对路径函数

Delphi twebbrowser打开paypal出错

Delphi windows 编程[1] - 窗体生成的过程一

Delphi读取android短信信息

Delphi中使用xmlhttp / xmlhttprequest 避免缓存

Delphi idhttp与cookie

Delphi建立文件的快捷方式

Delphi 关于汇编call的例子

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...