XLSReadWriteII4使用.docx
《XLSReadWriteII4使用.docx》由会员分享,可在线阅读,更多相关《XLSReadWriteII4使用.docx(23页珍藏版)》请在冰豆网上搜索。
XLSReadWriteII4使用
这是自带的一个例子,看懂这一点东西,基本的操作应该没问题了....
unitMain;
interface
uses
Windows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,
Dialogs,StdCtrls,XLSReadWriteII4,XLSFonts4,CellFormats4,BIFFRecsII4;
type
TfrmMain=class(TForm)
Label1:
TLabel;
Button1:
TButton;
edFilename:
TEdit;
Button2:
TButton;
Button3:
TButton;
dlgSave:
TSaveDialog;
XLS:
TXLSReadWriteII4;
procedureButton1Click(Sender:
TObject);
procedureButton2Click(Sender:
TObject);
procedureButton3Click(Sender:
TObject);
private
procedureAddFormats;
public
{Publicdeclarations}
end;
var
frmMain:
TfrmMain;
implementation
{$R*.dfm}
procedureTfrmMain.AddFormats;
begin
(*Formatasinglecell*)
(*显示字符串*)
XLS.Sheets[0].AsString[0,1]:
='Cell1';
(*字符串颜色*)
XLS.Sheets[0].Cell[0,1].FillPatternForeColor:
=xcYellow;
(*字体*)
XLS.Sheets[0].Cell[0,1].FontStyle:
=[xfsBold,xfsItalic];
(*Formatanumbercell(3decimalsandthousandseparator)
(*格式化字符串,显示小数点后三位,千位和百位之间加个空格*)
XLS.Sheets[0].AsFloat[0,0]:
=12335985394.895634;
XLS.Sheets[0].Cell[0,0].NumberFormat:
='###0.000';
(*Writeastringcell.*)
XLS.Sheet[0].AsStringRef['C2']:
='Hello';
(*单元格赋值*)
(*Setthefontsizeofthecellsinthearea.
(*改变区域内的字体大小*)
XLS.Sheet[0].Range.Items[1,0,3,3].FontSize:
=14;
(*Setthecolorofthecells.*)
(*设置区域的颜色*)
XLS.Sheet[0].Range.ItemsRef['B1:
D4'].FillPatternForeColor:
=xcYellow;
(*Setaoutlineborder.*)
(*设置外框线的外形、颜色*)
XLS.Sheet[0].Range.ItemsRef['B1:
D4'].BorderOutlineStyle:
=cbsThick;
(*Setcoloroftheoutlineborder.*)
XLS.Sheet[0].Range.ItemsRef['B1:
D4'].BorderOutlineColor:
=xcRed;
(*Makeacopyofthecells.*)
(*区域复制*)
XLS.Sheet[0].Range.ItemsRef['B1:
D4'].Copy(8,10);
(*Movethecells.*)
(*区域移动*)
XLS.Sheet[0].Range.ItemsRef['B1:
D4'].Move(8,2);
end;
procedureTfrmMain.Button1Click(Sender:
TObject);
begin
AddFormats;
XLS.Filename:
=edFilename.Text;
(*保存文件*)
XLS.Write;
end;
procedureTfrmMain.Button2Click(Sender:
TObject);
begin
dlgSave.FileName:
=edFilename.Text;
ifdlgSave.Executethen
edFilename.Text:
=dlgSave.FileName;
end;
procedureTfrmMain.Button3Click(Sender:
TObject);
begin
Close;
end;
end.
/////////////////////////////////////////////////////////////////////////////////////
Delphi中使用XlsReadWriteII
在Delphi中读取Excel文件,使用CreateOleObject的方式挺讨厌的,一直搞不定,输出了文件之后,总会在系统中打开一个Excel,就算Quit也不行,一个程序中使用的多了,还不定搞出什么事情来。
狠狠心找个其它的东西来代替,于是发现了XlsReadWriteII。
使用之后发现这个东西真不错,简单好用。
不管是读还是写均轻松搞定。
下面是Demo中的代码。
写文件代码,包括对格式的定制:
XLS.Filename:
='FormatSample.xls';
XLS.Clear;
//Addformat#0//先添加格式即ForMat:
控件有一个默认的格式,序号为0,以后每添加一个,序号就加1
withXLS.Formats.Adddobegin
FontIndex:
=XLS.Fonts.AddIndex;
XLS.Fonts[FontIndex].Name:
='Couriernew';
XLS.Fonts[FontIndex].Size:
=14;
XLS.Fonts[FontIndex].Color:
=xcRed;
end;
//Addformat#1
withXLS.Formats.Adddobegin
FontIndex:
=XLS.Fonts.AddIndex;
XLS.Fonts[FontIndex].AssignTFont(Font);
end;
//Addformat#2
withXLS.Formats.Adddobegin
FillPatternForeColor:
=xcLilac;
end;
//Addformat#3
withXLS.Formats.Adddobegin
BorderTopColor:
=xcBlue;
BorderBottomColor:
=xcBlue;
BorderTopStyle:
=cbsThin;
BorderBottomStyle:
=cbsThick;
end;
//Addformat#4
//ShortDateFormatisaDelphiglobalvariableforthelocaldateformat.
withXLS.Formats.Adddobegin
NumberFormat:
=ShortDateFormat;
end;
XLS.Sheets[0].WriteString(1,2,0,'Format#0');
XLS.Sheets[0].WriteString(1,3,1,'Format#1');
XLS.Sheets[0].WriteString(1,4,2,'Format#2');
XLS.Sheets[0].WriteString(1,5,3,'Format#3');
XLS.Sheets[0].WriteNumber(1,6,4,Date);
XLS.Write;//如果需要另存为一个文件,改FileName之后再写一次,如需更改工作簿的名称,设置Sheets[0].Name就可以了。
读取文件代码:
var
Col,Row:
integer;
Sum:
double;
begin
ifedFilename.Text=''thenbegin
ShowMessage('Filenameismissing');
Exit;
end;
Sum:
=0;
XLS.Filename:
=edFilename.Text;
XLS.Read;//此行不能省,否则读取不到数据
XLS.Sheets[0].LastCol:
=255;
XLS.Sheets[0].LastRow:
=65535;
forCol:
=XLS.Sheets[0].FirstColtoXLS.Sheets[0].LastColdobegin
forRow:
=XLS.Sheets[0].FirstRowtoXLS.Sheets[0].LastRowdobegin
if(RowGrid.Cells[Col+1,Row+1]:
=XLS.Sheets[0].AsFmtString[Col,Row];
ifXLS.Sheets[0].CellType[Col,Row]=ctFloatthen
Sum:
=Sum+XLS.Sheets[0].AsFloat[Col,Row];
end;
end;
lblSum.Caption:
=Format('Thesumofallnumericcellsare:
%.2f',[Sum]);
Grid.Invalidate;
end;
/////////////////////////////////////////////////////////////////////////
XLsReadWrite制作Excel时控制列的的格式
分类:
delphi2011-08-0614:
35116人阅读评论(0)收藏举报
最近研究下XlsReadWrite控件的使用。
其中,学会了在制作Excel时如何控制一整列的格式,如文本格式
先添加格式即ForMat:
控件有一个默认的格式,序号为0,以后每添加一个,序号就加1
withXLS.Formats.Adddobegin
FormatOptions:
=[foWrapText];
HorizAlignment:
=chaCenter;//对齐方式
NumberFormat:
='@';//主要设置该属性的值
VertAlignment:
=cvaCenter;
end;
然后添加当前Sheet中列的格式,语句如下:
withXLS.Sheets[0].ColumnFormats.Adddo
begin
Col1:
=2;//起始列的位置
Col2:
=3;//结束列的位置
FormatIndex:
=4;//ForMat对应的序号
end;
///////////////////////////////////////////////////////////////
用XlsReadWrite控件的时候怎样合并单元格?
我查到了,XLSReadWriteII.Sheets[0].MergedCells.Add(Col1,Row1,Col2,Row2);
/////////////////////////////////////////////////////////////////////////////////
Delphi编程保存数据到Excel文件(3):
使用XLSReadWriteII控件
今天采用XLSReadWriteII控件来完成10×10的乘法表,发现它很灵活,实现的功能比较多,基本能满足所以的需求。
代码片断如下:
procedureTForm1.Button1Click(Sender:
TObject);
Var
i,j:
Integer;
begin
XLS.Sheets[0].Name:
='Tentimestable(乘法表)';//给工作表命名
//Generalsettings常规的格式设置
WithXLS.Sheet[0].Range.ItemsRef['B2:
M14']dobegin
FontSize:
=12;
FontStyle:
=[xfsBold];
FillPatternForeColor:
=TExcelColor(45);
HorizAlignment:
=chaCenter;
end;
//Title标题
WithXLS.Sheet[0].Range.ItemsRef['B2:
M2']dobegin
Merged:
=true;
HorizAlignment:
=chaCenter;
FontSize:
=14;
end;
XLS.Sheet[0].AsStringRef['B2']:
='TenTimesTable(乘法表)';
//columnsheader列头
WithXLS.Sheet[0].Range.ItemsRef['C3:
M3']dobegin
FillPatternForeColor:
=TExcelColor(53);//Interior.ColorIndex:
=53;
FontColor:
=xcWhite;
end;
//rowsheader行头
WithXLS.Sheet[0].Range.ItemsRef['B4:
B14']dobegin
FillPatternForeColor:
=TExcelColor(53);
FontColor:
=xcWhite;
end;
//Tablevalues表内值
forj:
=0to10dobegin//循环各列
//columnheader列头(先列后行基于0开始)
XLS.Sheets[0].AsInteger[2+j,2]:
=j;
//rowheader行头(先列后行基于0开始)
XLS.Sheets[0].AsInteger[1,3+j]:
=j;
//timetable表内值
fori:
=0to10dobegin//循环各行
XLS.Sheets[0].AsInteger[2+j,3+i]:
=i*j;
end;
end;
XLS.Filename:
='TenTimesTable.xls';//保存到文件
XLS.Write;
MessageDlg('TenTimesTable.xlsiscreated',mtInformation,[mbOk],0);
end;
/////////////////////////////////////////////////////////////////////////////////////////////
使用NativeExcel2控件
这个控件非常好,非常的简捷,尤其是Range对象操作使用起来非常方便,值得推荐。
代码片断如下:
procedureTForm1.Button1Click(Sender:
TObject);
VarBook:
IXLSWorkbook;//申明工作薄
ws:
IXLSWorksheet;//申明工作表
i,j:
integer;
begin
//Createworkbook创建工作薄
Book:
=TXLSWorkbook.Create;
//Addnewsheet在工作薄中加一个新的工作表
ws:
=Book.Sheets.Add;
ws.Name:
='Tentimestable(乘法表)';//给工作表命名
//Generalsettings常规的格式设置
Withws.Range['B2','M14']dobegin
Font.Size:
=12;
Font.Bold:
=true;
ColumnWidth:
=5.71;
Interior.ColorIndex:
=45;
Borders.ColorIndex:
=xlColorIndexAutomatic;
HorizontalAlignment:
=xlHAlignCenter;
end;
//Title标题
Withws.Range['B2','M2']dobegin
Merge(false);
Font.Size:
=14;
Value:
='TenTimesTable(乘法表)';
end;
//columnsheader列头
Withws.Range['C3','M3']dobegin
Interior.ColorIndex:
=53;
Font.Color:
=clWhite;
end;
//rowsheader行头
Withws.Range['B4','B14']dobegin
Interior.ColorIndex:
=53;
Font.Color:
=clWhite;
end;
//Tablevalues表内值
fori:
=0to10dobegin
//columnheader列头
ws.Cells.Item[3,i+3].Value:
=i;
//rowheader行头
ws.Cells.Item[i+4,2].Value:
=i;
//timetable表内值
forj:
=0to10dobegin//先行后列
ws.Range['C4','M14'].Item[i+1,j+1].Value:
=i*j;
end;
end;
Book.SaveAs('TenTimesTable.xls');//保存到文件
MessageDlg('TenTimesTable.xlsiscreated',mtInformation,[mbOk],0);
end;
/////////////////////////////////////////////////////////////////////
下面附带了我写的一个DBGridToExcel控件,功能是把DBGrid中的数据导出到Excel中。
大家可以学习一下,做为参考。
为个控件中包括了使用属性,方法和我们将在下一篇中讲到的“事件”。
附1:
安装自制控件的方法:
(1).在Component菜单中,选择"InstallComponent...".
(2).在UnitFilename后面单击“...",选择"*.pas"控件的单元文件,再点击OK。
在出现的窗口中单击"install",即安装完毕。
新装的控件即出现在你的面板中。
附2:
TDBGridToExcel控件的全部源码,把它拷贝到记事本中,存为.pas文件即可。
unitDBGridToExcel;
{***********************************************************************}
{**}
{*ExportGridToWordVCLControlforD5&D6*}
{*Copyright(C)xiangding2003.10.1Allrightsreserved*}
{*BugReport:
boyxd@*}
{*Author:
小熊*}
{**}
{***********************************************************************}
{**}
{*ThisisaSimpleVersion*}
{**}
{***********************************************************************}
{**}
{*Install:
*}
{*PleaseSaveasfileGridToExcel.pasthenopenthefile*}
{*Clickthemenuitem[Component]-->[InstallComponent]*}
{*Click[Install]buttonintheInstallComponentdialog*}
{*afterinstall,youcanfindthecontrolatcomponent*}
{*page[sample]*}
{**}
{***********************************************************************}
{**}
{*安装:
*}
{*把附件保存,然后用Delphi打开这个GridToExcel.Pas文件,*}
{*选择Delphi菜单--〉Component-->InstallComponent,*}
{*然后选择Install即可。
安装之后,在控件面板的Samples页面上面,*}
{*熟悉之后,你可以试着设置一些复杂的属性,其他的自己摸索吧,*}
{***********************************************************************}
interface
uses
Windows,StdCtrls,ComCtrls,Messages,DBGrids,Graphics,ExtCtrls,
Forms,DB,ComObj,Controls,SysUtils,Classes;
ResourceString
SPromptExport='请等待,正在导出数据……';
SConnectExcel='正在启动Excel,请稍候……';
SConnectExcelError='连接Excel失败,可能没有安装Excel,无法导出.';
SC