c'est un début de truc alors m'en veut pas parceque il y a encore plein d'ajustements à faire mais ca peut te faire économiser un peu de temps :
Code : Tout sélectionner
;------------------------------------------------------------------------------------
; Object: ExcelWriter (Microsoft Office 97 compatible)
; Created: By Paul Squires, for VisualBasic and FreeBasic, 2001-11-10
; Converted: By ABBKlaus, for Purebasic 4.0, 2006-04-04
; Modified: By Flype, 2006-04-20
; Ressource: http://chicago.sourceforge.net/index.html
;------------------------------------------------------------------------------------
;------------------------------------------------------------------------------------
;// Constants
;------------------------------------------------------------------------------------
; BIFF (Binary Interchange File Format)
Enumeration ; MS_BIFF
#MS_BIFF_V_UNKNOWN = 0
#MS_BIFF_V2 = 2
#MS_BIFF_V3 = 3
#MS_BIFF_V4 = 4
#MS_BIFF_V5 = 5
#MS_BIFF_V7 = 7 ; Excel 95
#MS_BIFF_V8 = 8 ; Excel 97
EndEnumeration
Enumeration ; MS_BIFF_CRYPTO
#MS_BIFF_CRYPTO_NONE = 0
#MS_BIFF_CRYPTO_XOR
#MS_BIFF_CRYPTO_RC4
#MS_BIFF_CRYPTO_UNKNOWN
EndEnumeration
Enumeration ; MS_BIFF_TYPE
#MS_BIFF_TYPE_Workbook = $0005
#MS_BIFF_TYPE_VBModule = $0006
#MS_BIFF_TYPE_Worksheet = $0010
#MS_BIFF_TYPE_Chart = $0020
#MS_BIFF_TYPE_Macrosheet = $0040
#MS_BIFF_TYPE_Workspace = $0100
EndEnumeration
Enumeration ; BIFF
#XLS_BIFF_BLANK = $01
#XLS_BIFF_INTEGER = $02
#XLS_BIFF_REAL = $03
#XLS_BIFF_TEXT = $04
#XLS_BIFF_BOOLERR = $05
#XLS_BIFF_FORMULA = $06
#XLS_BIFF_STRING = $07
#XLS_BIFF_ROW = $08
#XLS_BIFF_BOF = $09
#XLS_BIFF_EOF = $0A
#XLS_BIFF_PROTECT = $12
#XLS_BIFF_HEADER = $14
#XLS_BIFF_FOOTER = $15
#XLS_BIFF_NAME = $18
#XLS_BIFF_HPAGEBREAK = $1B
#XLS_BIFF_SELECTION = $1D
#XLS_BIFF_FORMAT = $1E
#XLS_BIFF_COUNT = $1F
#XLS_BIFF_COLWIDTH = $24
#XLS_BIFF_DEFROWHEIGHT = $25
#XLS_BIFF_MARGIN_LEFT = $26
#XLS_BIFF_MARGIN_RIGHT = $27
#XLS_BIFF_MARGIN_TOP = $28
#XLS_BIFF_MARGIN_BOTTOM = $29
#XLS_BIFF_PRINTGRID = $2B
#XLS_BIFF_FILEPASS = $2F
#XLS_BIFF_FONT = $31
#XLS_BIFF_WINDOW1 = $3D
#XLS_BIFF_WINDOW2 = $3E
#XLS_BIFF_PANE = $41
#XLS_BIFF_DEFCOLWIDTH = $55
#XLS_BIFF_COLINFO = $7D
#XLS_BIFF_BOUNDSHEET = $85
#XLS_BIFF_XF = $E0
EndEnumeration
Enumeration ; Cells Type
#XLS_CellNormal = 0
#XLS_CellLocked = 64
#XLS_CellHidden = 128
EndEnumeration
Enumeration ; Cells Alignment/border
#XLS_GeneralAlign = 0
#XLS_LeftAlign = 1
#XLS_CentreAlign = 2
#XLS_RightAlign = 3
#XLS_FillCell = 4
#XLS_LeftBorder = 8
#XLS_RightBorder = 16
#XLS_TopBorder = 32
#XLS_BottomBorder = 64
#XLS_Shaded = 128
EndEnumeration
Enumeration ; Fonts Id
#XLS_Font0 = 0
#XLS_Font1 = 64
#XLS_Font2 = 128
#XLS_Font3 = 192
EndEnumeration
Enumeration ; Fonts Decoration
#XLS_NoFormat = 0
#XLS_Bold = 1
#XLS_Italic = 2
#XLS_Underline = 4
#XLS_Strikeout = 8
EndEnumeration
;------------------------------------------------------------------------------------
;// Structures
;------------------------------------------------------------------------------------
Structure XLS_BIFF
opcode.w
length.w
EndStructure
Structure XLS_BIFF_BLANK Extends XLS_BIFF
rw.w
Col.b
ixfe.w
EndStructure
Structure XLS_BIFF_BOF Extends XLS_BIFF
vers.w
dt.w
EndStructure
Structure XLS_BIFF_BOOLERR Extends XLS_BIFF
rw.w
Col.b
ixfe.w
bBoolErr.b
fError.b
EndStructure
Structure XLS_BIFF_BOUNDSHEET Extends XLS_BIFF
reserved.b
cch.b
;rgch
EndStructure
Structure XLS_BIFF_COLINFO Extends XLS_BIFF ; [PXL 1.0]
Col.w
grbit.w
ixfe.w
EndStructure
Structure XLS_BIFF_COLINFO2 Extends XLS_BIFF ; [PXL 2.0]
colFirst.w
colLast.w
coldx.w
ixfe.w
grbit.b
EndStructure
Structure XLS_BIFF_COLWIDTH Extends XLS_BIFF
column1.b
column2.b
width.w
EndStructure
Structure XLS_BIFF_DEFROWHEIGHT Extends XLS_BIFF
grbit.w
miyRw.w
EndStructure
Structure XLS_BIFF_DEFCOLWIDTH Extends XLS_BIFF ; [PXL 2.0]
grbit.w
coldx.w
ixfe.w
EndStructure
Structure XLS_BIFF_EOF Extends XLS_BIFF
;empty
EndStructure
Structure XLS_BIFF_FILEPASS Extends XLS_BIFF
;empty
EndStructure
Structure XLS_BIFF_FONT Extends XLS_BIFF
dwHeight.w
grbit.b
Reserved1.w
bls.w
Reserved2.w
uls.b
bFamily.b
bCharSet.b
reserved3.b
cch.b
;rgch
EndStructure
Structure XLS_BIFF_FORMAT Extends XLS_BIFF
cce.b
;rgch
EndStructure
Structure XLS_BIFF_FORMULA Extends XLS_BIFF
rw.w
Col.b
ixfe.w
num.d
grbit.b
cce.w
;rgce
EndStructure
Structure XLS_BIFF_LABEL Extends XLS_BIFF
rw.w
Col.b
ixfe.w
cch.w
;rgch
EndStructure
Structure XLS_BIFF_NAME Extends XLS_BIFF ; [PXL 1.0]
cch.b
cce.w
ixals.w
;rgch
;rgce
EndStructure
Structure XLS_BIFF_NAME2 Extends XLS_BIFF ; [PXL 2.0]
grbit.w
cch.b
cce.w
ixals.w
;rgch
;rgce
EndStructure
Structure XLS_BIFF_NUMBER Extends XLS_BIFF
rw.w
Col.b
ixfe.w
num.d
EndStructure
Structure XLS_BIFF_PANE Extends XLS_BIFF ; [PXL 2.0]
x.w
miyRw.w
grbit.w
ixfe.w
EndStructure
Structure XLS_BIFF_ROW Extends XLS_BIFF
rw.w
y.w
rwTop.w
colLeft.w
pnnAct.b
EndStructure
Structure XLS_BIFF_SELECTION Extends XLS_BIFF
rwTop.w
colLeft.w
rwBottom.w
colRight.b
rwActive.w
colActive.b
EndStructure
Structure XLS_BIFF_STRING Extends XLS_BIFF
cch.b
;rgch
EndStructure
Structure XLS_BIFF_WINDOW1 Extends XLS_BIFF ; [PXL 2.0]
grbit.w
itabCur.w
EndStructure
Structure XLS_BIFF_WINDOW2 Extends XLS_BIFF ; [PXL 1.0]
rwTop.w
colLeft.b
grbit.w
EndStructure
Structure XLS_BIFF_WINDOW2_ Extends XLS_BIFF ; [PXL 2.0]
rwTop.w
colLeft.b
grbit.w
EndStructure
Structure XLS_BIFF_XF Extends XLS_BIFF ; [PXL 1.0]
ixfnt.w
ixfmtParent.w
ixnf.w
fAttributes.l
fBaseAttr.w
fTextAttr.w
icvFore.w
icvFill.w
icvBorder.w
backStyle.b
borderStyle.b
EndStructure
Structure XLS_BIFF_XF_ Extends XLS_BIFF ; [PXL 2.0]
ixfnt.w
ixnf.w
fAttributes.l
fBaseAttr.w
fTextAttr.w
icvFore.w
icvFill.w
bRight.b
bTop.b
bLeft.b
bBottom.b
backStyle.b
borderStyle.b
EndStructure
Structure XLS_BIFF_COUNT Extends XLS_BIFF
count.w
EndStructure
Structure XLS_BIFF_HEADER Extends XLS_BIFF
textLen.b
EndStructure
Structure XLS_BIFF_FOOTER Extends XLS_BIFF
textLen.b
EndStructure
Structure XLS_BIFF_ROWHEIGHT Extends XLS_BIFF
row.w
column1.w
column2.w
height.w
Internal.w
defAttr.b
offset.w
attr1.b
attr2.b
attr3.b
EndStructure
Structure XLS_BIFF_HPAGEBREAK Extends XLS_BIFF
number.w
EndStructure
Structure XLS_BIFF_MARGIN Extends XLS_BIFF
Value.d
EndStructure
Structure XLS_BIFF_PRINTGRID Extends XLS_BIFF
print.w
EndStructure
Structure XLS_BIFF_PROTECT Extends XLS_BIFF
Protect.w
EndStructure
Structure XLS_BIFF_DATA Extends XLS_BIFF
row.w
column.w
attr1.b
attr2.b
attr3.b
EndStructure
Structure XLS_BIFF_INTEGER Extends XLS_BIFF_DATA
integer.w
EndStructure
Structure XLS_BIFF_TEXT Extends XLS_BIFF_DATA
textLen.b
EndStructure
Structure XLS_BIFF_PASSWORD Extends XLS_BIFF
; à définir
EndStructure
;------------------------------------------------------------------------------------
;// Private functions
;------------------------------------------------------------------------------------
Global xlsFileNumber.l
Procedure.d XLS_TimeToDouble(strTime.s)
Protected h.l, m.l, s.l, d.d
If Len(strTime) = 8
h = Val(Mid(strTime, 1, 2))
m = Val(Mid(strTime, 4, 2))
s = Val(Mid(strTime, 7, 2))
d = (h * 3600 + m * 60 + s) / 86400
EndIf
ProcedureReturn d
EndProcedure
Procedure.l XLS_DateToJulian(strDate.s)
Protected y.l, m.l, d.l
If Len(strDate) = 8
y = Val(Mid(strDate, 1, 4))
m = Val(Mid(strDate, 5, 2)) : If m < 3 : m + 12 : y - 1 : EndIf
d = Val(Mid(strDate, 7, 2))
d + Int((y+4712)*365.25)
d + Int(30.6*(m-1)+0.2)
d + (y/400)
d - (y/100)
EndIf
ProcedureReturn d
EndProcedure
Procedure.l XLS_WriteToFile(*lpBuffer, nNumberOfBytesToWrite.l)
Protected NumberOfBytesWritten.l
If xlsFileNumber
If WriteFile_(xlsFileNumber, *lpBuffer, nNumberOfBytesToWrite, @NumberOfBytesWritten, #Null)
ProcedureReturn NumberOfBytesWritten
EndIf
EndIf
EndProcedure
Procedure.l XLS_WriteDefaultFormats() ; bug inside
Protected i.l
Protected Dim aFormat.s(23)
Protected record1.XLS_BIFF_COUNT
Protected record2.XLS_BIFF_FORMAT
aFormat(00) = "General"
aFormat(01) = "0"
aFormat(02) = "0.00"
aFormat(03) = "#,##0"
aFormat(04) = "#,##0.00"
aFormat(05) = "#,##0\ " + #DQUOTE$ + "$" + #DQUOTE$ + ";\-#,##0\ " + #DQUOTE$ + "$" + #DQUOTE$
aFormat(06) = "#,##0\ " + #DQUOTE$ + "$" + #DQUOTE$ + ";[Red]\-#,##0\ " + #DQUOTE$ + "$" + #DQUOTE$
aFormat(07) = "#,##0.00\ " + #DQUOTE$ + "$" + #DQUOTE$ + ";\-#,##0.00\ " + #DQUOTE$ + "$" + #DQUOTE$
aFormat(08) = "#,##0.00\ " + #DQUOTE$ + "$" + #DQUOTE$ + ";[Red]\-#,##0.00\ " + #DQUOTE$ + "$" + #DQUOTE$
aFormat(09) = "0%"
aFormat(10) = "0.00%"
aFormat(11) = "0.00E+00"
aFormat(12) = "yyyy-mm-dd"
aFormat(13) = "dd/\ mmm\ yy"
aFormat(14) = "dd/\ mmm"
aFormat(15) = "mmm\ yy"
aFormat(16) = "h:mm\ AM/PM"
aFormat(17) = "h:mm:ss\ AM/PM"
aFormat(18) = "hh:mm"
aFormat(19) = "hh:mm:ss"
aFormat(20) = "dd/mm/yy\ hh:mm"
aFormat(21) = "##0.0E+0"
aFormat(22) = "mm:ss"
aFormat(23) = "@"
record1\opcode = #XLS_BIFF_COUNT
record1\length = SizeOf(XLS_BIFF_COUNT)
record1\length - SizeOf(XLS_BIFF)
record1\count = 23
If xlsFileNumber
If XLS_WriteToFile(record1, SizeOf(XLS_BIFF_COUNT))
For i = 0 To 23
record2\opcode = #XLS_BIFF_FORMAT
record2\length = SizeOf(XLS_BIFF_FORMAT)
record2\length - SizeOf(XLS_BIFF)
record2\length + Len(aFormat(i))
;record2\formatLen = Len(aFormat(i))
If XLS_WriteToFile(record2, SizeOf(XLS_BIFF_FORMAT)) = #False
Break
EndIf
If XLS_WriteToFile(@aFormat(i), record2\length) = #False
Break
EndIf
Next
ProcedureReturn #True
EndIf
EndIf
EndProcedure
;------------------------------------------------------------------------------------
;// Public functions
;------------------------------------------------------------------------------------
DeclareDLL.l XLS_CloseFile()
DeclareDLL.l XLS_CreateFile(filename.s)
DeclareDLL.l XLS_End()
DeclareDLL.l XLS_Init()
DeclareDLL.l XLS_InsertHorizPageBreak(row.l)
DeclareDLL.l XLS_PrintGridLines(bool.l)
DeclareDLL.l XLS_ProtectSpreadsheet(bool.l)
DeclareDLL.l XLS_SetColumnWidth(column1.l, column2.l, width.l)
DeclareDLL.l XLS_SetDefaultRowHeight(height.l)
DeclareDLL.l XLS_SetFilePassword(pwd.s)
DeclareDLL.l XLS_SetFont(name.s, height.l, format.l)
DeclareDLL.l XLS_SetFooter(footer.s)
DeclareDLL.l XLS_SetHeader(Header.s)
DeclareDLL.l XLS_SetMarginLeft(Value.d)
DeclareDLL.l XLS_SetMarginRight(Value.d)
DeclareDLL.l XLS_SetMarginTop(Value.d)
DeclareDLL.l XLS_SetMarginBottom(Value.d)
DeclareDLL.l XLS_SetRowHeight(row.l, height.l)
DeclareDLL.l XLS_WriteDate(date.s, mask.s, row.l, Col.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
DeclareDLL.l XLS_WriteInteger(integer.w ,row.l ,column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
DeclareDLL.l XLS_WriteReal(number.d, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
DeclareDLL.l XLS_WriteText(text.s, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
ProcedureDLL.l XLS_Init()
Global NewList XLS_HorizPageBreakRows.l() ; .w ?
EndProcedure
ProcedureDLL.l XLS_CreateFile(filename.s)
Protected record.XLS_BIFF_BOF
If FileSize(filename) >= 0
If DeleteFile(filename) = #False
ProcedureReturn -1
EndIf
EndIf
xlsFileNumber = CreateFile_(@filename, #GENERIC_READ|#GENERIC_WRITE, #FILE_SHARE_READ, 0, #CREATE_ALWAYS, #FILE_ATTRIBUTE_NORMAL, 0)
If xlsFileNumber
record\opcode = #XLS_BIFF_BOF
record\length = SizeOf(XLS_BIFF_BOF)
record\length - SizeOf(XLS_BIFF)
record\vers = 2
record\dt = #MS_BIFF_TYPE_Worksheet
XLS_WriteToFile(record, SizeOf(XLS_BIFF_BOF))
ClearList(XLS_HorizPageBreakRows())
XLS_WriteDefaultFormats()
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l XLS_CloseFile()
Protected numPageBreak.l, Buffer.w
Protected record1.XLS_BIFF_HPAGEBREAK
Protected record2.XLS_BIFF_EOF
numPageBreak.l = CountList(XLS_HorizPageBreakRows())
If numPageBreak
SortList(XLS_HorizPageBreakRows(), 0)
record1\opcode = #XLS_BIFF_HPAGEBREAK
record1\length = SizeOf(XLS_BIFF_HPAGEBREAK)
record1\length - SizeOf(XLS_BIFF)
record1\length + (numPageBreak * 2)
record1\number = numPageBreak
If XLS_WriteToFile(record1, SizeOf(XLS_BIFF_HPAGEBREAK))
ForEach XLS_HorizPageBreakRows()
Buffer.w = XLS_HorizPageBreakRows()
If XLS_WriteToFile(@Buffer, 2) = #False
ProcedureReturn #False
EndIf
Next
Else
ProcedureReturn #False
EndIf
EndIf
record2\opcode = #XLS_BIFF_EOF
If XLS_WriteToFile(record2, SizeOf(XLS_BIFF_EOF))
If xlsFileNumber And CloseHandle_(xlsFileNumber)
ClearList(XLS_HorizPageBreakRows())
xlsFileNumber = #Null
ProcedureReturn #True
EndIf
EndIf
EndProcedure
ProcedureDLL.l XLS_End()
XLS_CloseFile()
ClearList(XLS_HorizPageBreakRows())
EndProcedure
ProcedureDLL.l XLS_InsertHorizPageBreak(row.l)
If xlsFileNumber And AddElement(XLS_HorizPageBreakRows())
XLS_HorizPageBreakRows() = (row & $FFFF)
EndIf
EndProcedure
ProcedureDLL.l XLS_PrintGridLines(bool.l)
Protected record.XLS_BIFF_PRINTGRID
record\opcode = #XLS_BIFF_PRINTGRID
record\length = SizeOf(XLS_BIFF_PRINTGRID)
record\length - SizeOf(XLS_BIFF)
record\print = bool
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_PRINTGRID))
EndProcedure
ProcedureDLL.l XLS_ProtectSpreadsheet(bool.l)
Protected record.XLS_BIFF_PROTECT
record\opcode = #XLS_BIFF_PROTECT
record\length = SizeOf(XLS_BIFF_PROTECT)
record\length - SizeOf(XLS_BIFF)
record\Protect = bool
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_PROTECT))
EndProcedure
ProcedureDLL.l XLS_SetMarginLeft(Value.d)
Protected record.XLS_BIFF_MARGIN
record\opcode = #XLS_BIFF_MARGIN_LEFT
record\length = SizeOf(XLS_BIFF_MARGIN)
record\length - SizeOf(XLS_BIFF)
record\Value = Value
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_MARGIN))
EndProcedure
ProcedureDLL.l XLS_SetMarginRight(Value.d)
Protected record.XLS_BIFF_MARGIN
record\opcode = #XLS_BIFF_MARGIN_RIGHT
record\length = SizeOf(XLS_BIFF_MARGIN)
record\length - SizeOf(XLS_BIFF)
record\Value = Value
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_MARGIN))
EndProcedure
ProcedureDLL.l XLS_SetMarginTop(Value.d)
Protected record.XLS_BIFF_MARGIN
record\opcode = #XLS_BIFF_MARGIN_TOP
record\length = SizeOf(XLS_BIFF_MARGIN)
record\length - SizeOf(XLS_BIFF)
record\Value = Value
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_MARGIN))
EndProcedure
ProcedureDLL.l XLS_SetMarginBottom(Value.d)
Protected record.XLS_BIFF_MARGIN
record\opcode = #XLS_BIFF_MARGIN_BOTTOM
record\length = SizeOf(XLS_BIFF_MARGIN)
record\length - SizeOf(XLS_BIFF)
record\Value = Value
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_MARGIN))
EndProcedure
ProcedureDLL.l XLS_SetColumnWidth(column1.l, column2.l, width.l)
Protected record.XLS_BIFF_COLWIDTH
record\opcode = #XLS_BIFF_COLWIDTH
record\length = SizeOf(XLS_BIFF_COLWIDTH)
record\length - SizeOf(XLS_BIFF)
record\column1 = (column1 & $FF)
record\column2 = (column2 & $FF)
record\width = (width * 256)
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_COLWIDTH))
EndProcedure
ProcedureDLL.l XLS_SetFont(name.s, height.l, format.l)
Protected record.XLS_BIFF_FONT
record\opcode = #XLS_BIFF_FONT
record\length = SizeOf(XLS_BIFF_FONT)
record\length - SizeOf(XLS_BIFF)
record\length + Len(name)
record\dwHeight = (height * 20)
; record\attrs1 = (format & $FF)
; record\attrs2 = #Null
record\cch = (Len(name) & $FF)
If XLS_WriteToFile(record, SizeOf(XLS_BIFF_FONT))
ProcedureReturn XLS_WriteToFile(@name, Len(name))
EndIf
EndProcedure
ProcedureDLL.l XLS_SetHeader(Header.s)
Protected record.XLS_BIFF_HEADER
record\opcode = #XLS_BIFF_HEADER
record\length = SizeOf(XLS_BIFF_HEADER)
record\length - SizeOf(XLS_BIFF)
record\length + Len(Header)
record\textLen = (Len(Header) & $FF)
If XLS_WriteToFile(record, SizeOf(XLS_BIFF_HEADER))
ProcedureReturn XLS_WriteToFile(@Header, Len(Header))
EndIf
EndProcedure
ProcedureDLL.l XLS_SetFooter(footer.s)
Protected record.XLS_BIFF_FOOTER
record\opcode = #XLS_BIFF_FOOTER
record\length = SizeOf(XLS_BIFF_FOOTER)
record\length - SizeOf(XLS_BIFF)
record\length + Len(footer)
record\textLen = (Len(footer) & $FF)
If XLS_WriteToFile(record, SizeOf(XLS_BIFF_FOOTER))
ProcedureReturn XLS_WriteToFile(@footer, Len(footer))
EndIf
EndProcedure
ProcedureDLL.l XLS_SetFilePassword(pwd.s)
Protected record.XLS_BIFF_PASSWORD
; record\opcode = #XLS_BIFF_PASSWORD
; record\length = SizeOf(XLS_BIFF_PASSWORD)
; record\length - SizeOf(XLS_BIFF)
; record\length + Len(pwd)
;
; If XLS_WriteToFile(record, SizeOf(XLS_BIFF_PASSWORD))
; ProcedureReturn XLS_WriteToFile(@pwd, Len(pwd))
; EndIf
EndProcedure
ProcedureDLL.l XLS_SetDefaultRowHeight(height.l)
Protected record.XLS_BIFF_DEFROWHEIGHT
; record\opcode = #XLS_BIFF_DEFROWHEIGHT
; record\length = SizeOf(XLS_BIFF_DEFROWHEIGHT)
; record\length - SizeOf(XLS_BIFF)
; record\height = (height * 20)
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_DEFROWHEIGHT))
EndProcedure
ProcedureDLL.l XLS_SetSheetName(name.s)
Protected record.XLS_BIFF_BOUNDSHEET
record\opcode = #XLS_BIFF_BOUNDSHEET
record\length = SizeOf(XLS_BIFF_BOUNDSHEET)
record\length - SizeOf(XLS_BIFF)
record\length + Len(name)
record\reserved = #Null
record\cch = (Len(name) & $FF)
If XLS_WriteToFile(record, SizeOf(XLS_BIFF_BOUNDSHEET))
ProcedureReturn XLS_WriteToFile(@name, record\cch)
EndIf
EndProcedure
ProcedureDLL.l XLS_SetRowHeight(row.l, height.l)
Protected record.XLS_BIFF_ROWHEIGHT
; record\opcode = #XLS_BIFF_ROWHEIGHT
; record\length = SizeOf(XLS_BIFF_ROWHEIGHT)
; record\length - SizeOf(XLS_BIFF)
; record\row = (row & $FFFF)
; record\column1 = 0
; record\column2 = 256
; record\height = (height * 20)
; record\Internal = 0
; record\defAttr = 0
; record\offset = 0
; record\attr1 = 0
; record\attr2 = 0
; record\attr3 = 0
;
; ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_ROWHEIGHT))
EndProcedure
ProcedureDLL.l XLS_WriteDate(datetime.s, mask.s, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
Protected dDatetime.d
; Protected record.XLS_BIFF_REAL
;
; datetime = FormatDate("%yyyy%mm%dd %hh:%ii:%ss", ParseDate(mask, datetime))
;
; dDatetime = 1
; dDatetime - XLS_DateToJulian("19000100")
; dDatetime + XLS_DateToJulian(Mid(datetime, 01, 8))
; dDatetime + XLS_TimeToDouble(Mid(datetime, 10, 8))
;
; record\opcode = #XLS_BIFF_REAL
; record\length = SizeOf(XLS_BIFF_REAL)
; record\length - SizeOf(XLS_BIFF)
; record\row = (row & $FFFF)
; record\column = (column & $FFFF)
; record\attr1 = (HiddenLocked & $FF)
; record\attr2 = (CellFont | CellFormat & $FF)
; record\attr3 = (CellAlignment & $FF)
; record\real = dDatetime
;
; ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_REAL))
EndProcedure
ProcedureDLL.l XLS_WriteInteger(integer.w, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
Protected record.XLS_BIFF_INTEGER
record\opcode = #XLS_BIFF_INTEGER
record\length = SizeOf(XLS_BIFF_INTEGER)
record\length - SizeOf(XLS_BIFF)
record\row = (row & $FFFF)
record\column = (column & $FFFF)
record\attr1 = (HiddenLocked & $FF)
record\attr2 = (CellFont | CellFormat & $FF)
record\attr3 = (CellAlignment & $FF)
record\integer = integer
ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_INTEGER))
EndProcedure
ProcedureDLL.l XLS_WriteReal(real.d, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
; Protected record.XLS_BIFF_REAL
;
; record\opcode = #XLS_BIFF_REAL
; record\length = SizeOf(XLS_BIFF_REAL)
; record\length - SizeOf(XLS_BIFF)
; record\row = (row & $FFFF)
; record\column = (column & $FFFF)
; record\attr1 = (HiddenLocked & $FF)
; record\attr2 = (CellFont | CellFormat & $FF)
; record\attr3 = (CellAlignment & $FF)
; record\real = real
;
; ProcedureReturn XLS_WriteToFile(record, SizeOf(XLS_BIFF_REAL))
EndProcedure
ProcedureDLL.l XLS_WriteText(text.s, row.l, column.l, CellFont.l=0, CellAlignment.l=0, HiddenLocked.l=0, CellFormat.l=0)
Protected record.XLS_BIFF_TEXT
record\opcode = #XLS_BIFF_TEXT
record\length = SizeOf(XLS_BIFF_TEXT)
record\length - SizeOf(XLS_BIFF)
record\length + Len(text)
record\textLen = Len(text)
record\row = (row & $FFFF)
record\column = (column & $FFFF)
record\attr1 = (HiddenLocked & $FF)
record\attr2 = (CellFont | CellFormat & $FF)
record\attr3 = (CellAlignment & $FF)
If XLS_WriteToFile(record, SizeOf(XLS_BIFF_TEXT))
ProcedureReturn XLS_WriteToFile(@text, record\textLen)
EndIf
EndProcedure
;------------------------------------------------------------------------------------
;// End of file
;------------------------------------------------------------------------------------