gpt4 book ai didi

excel - 自定义从delphi导入的excel文件

转载 作者:行者123 更新时间:2023-12-01 18:56:51 25 4
gpt4 key购买 nike

我编写了一个代码来从 dbgrid 导出 Excel 文件。以下是代码:

    var i, x:integer;
sfile:string;
begin
XlApp:=createoleobject('Excel.Application');
XlBook:=XlApp.WorkBooks.Add;
XlSheet:= XlBook.worksheets.add;
for i:=0 to dbgrid1.fieldcount-1 do begin
xlsheet.cells[1,i+1].value:=dbgrid1.columns[i].title.caption;
end;
zquery1.first;
x:=1;
while not zquery1.eof do begin
xlsheet.cells[x+1,1].value:=x;
for i:=1 to dbgrid1.fieldcount-1 do begin
xlsheet.cells[x+1, i+1].value:=dbgrid1.fields[i].text;
end;
zquery1.next;
inc(x);
end;
xlapp.visible:=true;
end;

它工作得很好,但是 table 太乱了。如何自定义此 Excel 文件,以便每列根据每个数据给出正确的宽度值?谢谢。

最佳答案

Excel Range 有一个 AutoFit 方法,可以在一次调用中为您完成此操作,并且不需要您进行实验来确定所需的宽度分配给每一列。

下面是一个示例(在 Delphi 2007 中测试),它创建一个二维变体数组,用太宽而无法容纳默认 Excel 单元格的示例文本填充它,将该文本分配给 Excel 范围,并自动调整其中所有单元格的宽度该范围为文本的正确宽度(类似于双击 Excel 中列之间的分隔线时发生的情况)。您应该能够轻松地采用这种方式来自动调整文本宽度(以及通过自动化将数据传输到 Excel 的更快方式)来使用您的代码。

出于演示目的,我已将代码放入 TButton.OnClick 事件处理程序中。

uses
ComObj, ActiveX;

procedure TForm3.Button1Click(Sender: TObject);
var
xls, wb, Range: OLEVariant;
arrData: Variant;
RowCount, ColCount, i, j: Integer;
begin
{create variant array where we'll copy our data}
RowCount := 10;
ColCount := 10;
arrData := VarArrayCreate([1, RowCount, 1, ColCount], varVariant);

{fill array}
for i := 1 to RowCount do
for j := 1 to ColCount do
arrData[i, j] := Format('This is test text #%d-%d', [i, j]);

{initialize an instance of Excel}
xls := CreateOLEObject('Excel.Application');

{create workbook}
wb := xls.Workbooks.Add;

{retrieve a range where data must be placed}
Range := wb.WorkSheets[1].Range[wb.WorkSheets[1].Cells[1, 1],
wb.WorkSheets[1].Cells[RowCount, ColCount]];

{ copy data from the array into an Excel Range, and then use AutoFit to size them }
Range.Value := arrData;
Range.Columns.AutoFit;

{show Excel with our data}
xls.Visible := True;
end;

关于excel - 自定义从delphi导入的excel文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51585984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com