Code: Select all
;#########################################################################
;-
XIncludeFile "PureXLS.pbi"
;-
#OUTPUT_FILE = "sheet.xls"
doc = PureXLS_Workbook(#OUTPUT_FILE)
If doc
; Workbook -> Styles
If PureXLS_Styles(doc)
; Workbook -> Styles -> Style -> myFirstRow
If PureXLS_Style(doc, "myFirstRow")
PureXLS_Font(doc, "Arial", "10", "#000000", "1")
PureXLS_Interior(doc, "#808080", #XLS_Pattern_Solid)
PureXLS_Alignment(doc, #XLS_Horizontal_Center, #XLS_Vertical_Center)
If PureXLS_Borders(doc)
PureXLS_Border(doc, #XLS_Position_Bottom, #XLS_LineStyle_Continuous, "3", "#000000")
PureXLS_Border(doc, #XLS_Position_Left, #XLS_LineStyle_Continuous, "1")
PureXLS_Border(doc, #XLS_Position_Right, #XLS_LineStyle_Continuous, "3", "Red")
PureXLS_Border(doc, #XLS_Position_Top, #XLS_LineStyle_Continuous, "1")
PureXLS_EndBorders(doc)
EndIf
PureXLS_EndStyle(doc)
EndIf
; Workbook -> Styles -> Style -> myFirstColumn
If PureXLS_Style(doc, "myFirstColumn")
PureXLS_Font(doc, "Arial", "8", "#0000FF", "1")
PureXLS_Interior(doc, "#00FF00", #XLS_Pattern_Solid)
PureXLS_Alignment(doc, #XLS_Horizontal_Center, #XLS_Vertical_Center)
PureXLS_EndStyle(doc)
EndIf
; Workbook -> Styles -> Style -> myNumber
If PureXLS_Style(doc, "myNumber")
PureXLS_Font(doc, "Tahoma", "8", "#008800", "1")
PureXLS_Interior(doc, "#C0C0FF", #XLS_Pattern_Solid)
PureXLS_Alignment(doc, #XLS_Horizontal_Right, #XLS_Vertical_Center)
If PureXLS_Borders(doc)
PureXLS_Border(doc, #XLS_Position_Bottom, #XLS_LineStyle_DashDotDot)
PureXLS_Border(doc, #XLS_Position_Right, #XLS_LineStyle_DashDotDot)
PureXLS_EndBorders(doc)
EndIf
PureXLS_EndStyle(doc)
EndIf
PureXLS_EndStyles(doc)
EndIf
; Workbook -> Worksheet
If PureXLS_Worksheet(doc, "mySheet")
; Workbook -> Worksheet -> Table
If PureXLS_Table(doc, "100", "30")
; Workbook -> Worksheet -> Table -> Columns
PureXLS_Column(doc, "50", "myFirstColumn")
PureXLS_Column(doc, "150")
PureXLS_Column(doc, "150")
PureXLS_Column(doc, "80", "myNumber")
; Workbook -> Worksheet -> Table -> First row
If PureXLS_Row(doc, "20")
PureXLS_Cell(doc, "ID", #XLS_Type_String, "myFirstRow")
PureXLS_Cell(doc, "Software", #XLS_Type_String, "myFirstRow")
PureXLS_Cell(doc, "Author", #XLS_Type_String, "myFirstRow")
PureXLS_Cell(doc, "Price", #XLS_Type_String, "myFirstRow")
PureXLS_EndRow(doc)
EndIf
; Workbook -> Worksheet -> Table -> Populate Rows
For i = 1 To 20
If PureXLS_Row(doc, "14")
PureXLS_Cell(doc, "ID" + RSet(Str(i), 2, "0"))
PureXLS_Cell(doc, "PureBasic 4.0")
PureXLS_Cell(doc, "Fantaisie Software")
PureXLS_Cell(doc, Str(Random(100)+10), #XLS_Type_Number)
PureXLS_EndRow(doc)
EndIf
Next
If PureXLS_Row(doc, "14")
PureXLS_Cell(doc, "")
PureXLS_Cell(doc, "")
PureXLS_Cell(doc, "Average:")
PureXLS_Cell(doc, "", #XLS_Type_Number, "myNumber", "=AVERAGE(R[-20]C[0]:R[-1]C[0])")
PureXLS_EndRow(doc)
EndIf
PureXLS_EndTable(doc)
EndIf
PureXLS_EndWorksheet(doc)
EndIf
PureXLS_EndWorkbook(doc)
RunProgram(#OUTPUT_FILE)
EndIf
;-
End
;#########################################################################
;-
;- File: PureXLS.pbi
;- Version: 0.1 - October 2006
;-
;- Author: flype
;- Contact: mailto:flype44@gmail.com
;-
;- Compiler: PureBasic 4.0
;- HomePage: http://www.purebasic.com
;-
;- Description: API for writing - not reading - Microsoft Office Excel documents
;- The file format is in XML and only support Microsoft Office XP, 2002, 2003, or better.
;-
;- XML in Excel and the Spreadsheet Component
;- MSDN: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnexcl2k2/html/odc_xlsmlinss.asp
;-
;{ Hierarchy of XLS/XML tags
;<?xml version="1.0" encoding="UTF-8"?>
;<Workbook>
; <Styles>
; <Style>
; <Alignment/>
; <Borders>
; <Border/>
; </Borders>
; <Font/>
; <Interior/>
; <NumberFormat/>
; <Protection/>
; </Style>
; </Styles>
; <Worksheet>
; <Table>
; <Column/>
; <Row>
; <Cell>
; <Data/>
; </Cell>
; </Row>
; </Table>
; </Worksheet>
;</Workbook>
;}
EnableExplicit
;-
;- CONSTANTS - PUBLIC
;-
;{ #XLS_Horizontal
#XLS_Horizontal_Automatic = "Automatic"
#XLS_Horizontal_Left = "Left"
#XLS_Horizontal_Center = "Center"
#XLS_Horizontal_Right = "Right"
#XLS_Horizontal_Fill = "Fill"
#XLS_Horizontal_Justify = "Justify"
#XLS_Horizontal_CenterAcrossSelection = "CenterAcrossSelection"
#XLS_Horizontal_Distributed = "Distributed"
#XLS_Horizontal_JustifyDistributed = "JustifyDistributed"
;}
;{ #XLS_Vertical
#XLS_Vertical_Automatic = "Automatic"
#XLS_Vertical_Top = "Top"
#XLS_Vertical_Bottom = "Bottom"
#XLS_Vertical_Center = "Center"
#XLS_Vertical_Justify = "Justify"
#XLS_Vertical_JustifyDistributed = "JustifyDistributed"
;}
;{ #XLS_ReadingOrder
#XLS_ReadingOrder_RightToLeft = "RightToLeft"
#XLS_ReadingOrder_LeftToRight = "LeftToRight"
#XLS_ReadingOrder_Context = "Context"
;}
;{ #XLS_Position
#XLS_Position_Left = "Left"
#XLS_Position_Top = "Top"
#XLS_Position_Right = "Right"
#XLS_Position_Bottom = "Bottom"
#XLS_Position_DiagonalLeft = "DiagonalLeft"
#XLS_Position_DiagonalRight = "DiagonalRight"
;}
;{ #XLS_LineStyle
#XLS_LineStyle_None = "None"
#XLS_LineStyle_Continuous = "Continuous"
#XLS_LineStyle_Dash = "Dash"
#XLS_LineStyle_Dot = "Dot"
#XLS_LineStyle_DashDot = "DashDot"
#XLS_LineStyle_DashDotDot = "DashDotDot"
#XLS_LineStyle_SlantDashDot = "SlantDashDot"
#XLS_LineStyle_Double = "Double"
;}
;{ #XLS_Color
#XLS_Color_Automatic = "Automatic"
;}
;{ #XLS_Type
#XLS_Type_Number = "Number"
#XLS_Type_DateTime = "DateTime"
#XLS_Type_Boolean = "Boolean"
#XLS_Type_String = "String"
#XLS_Type_Error = "Error"
;}
;{ #XLS_Underline
#XLS_Underline_None = "None"
#XLS_Underline_Single = "Single"
#XLS_Underline_Double = "Double"
#XLS_Underline_SingleAccounting = "SingleAccounting"
#XLS_Underline_DoubleAccounting = "DoubleAccounting"
;}
;{ #XLS_VerticalAlign
#XLS_VerticalAlign_None = "None"
#XLS_VerticalAlign_Subscript = "Subscript"
#XLS_VerticalAlign_Superscript = "Superscript"
;}
;{ #XLS_Family
#XLS_Family_Automatic = "Automatic"
#XLS_Family_Decorative = "Decorative"
#XLS_Family_Modern = "Modern"
#XLS_Family_Roman = "Roman"
#XLS_Family_Script = "Script"
#XLS_Family_Swiss = "Swiss"
;}
;{ #XLS_Pattern
#XLS_Pattern_None = "None"
#XLS_Pattern_Solid = "Solid"
#XLS_Pattern_Gray75 = "Gray75"
#XLS_Pattern_Gray50 = "Gray50"
#XLS_Pattern_Gray25 = "Gray25"
#XLS_Pattern_Gray125 = "Gray125"
#XLS_Pattern_Gray0625 = "Gray0625"
#XLS_Pattern_HorzStripe = "HorzStripe"
#XLS_Pattern_VertStripe = "VertStripe"
#XLS_Pattern_ReverseDiagStripe = "ReverseDiagStripe"
#XLS_Pattern_DiagStripe = "DiagStripe"
#XLS_Pattern_DiagCross = "DiagCross"
#XLS_Pattern_ThickDiagCross = "ThickDiagCross"
#XLS_Pattern_ThinHorzStripe = "ThinHorzStripe"
#XLS_Pattern_ThinVertStripe = "ThinVertStripe"
#XLS_Pattern_ThinReverseDiagStripe = "ThinReverseDiagStripe"
#XLS_Pattern_ThinDiagStripe = "ThinDiagStripe"
#XLS_Pattern_ThinHorzCross = "ThinHorzCross"
#XLS_Pattern_ThinDiagCross = "ThinDiagCross"
;}
;{ #XLS_Format
#XLS_Format_General = "General"
#XLS_Format_GeneralNumber = "General Number"
#XLS_Format_GeneralDate = "General Date"
#XLS_Format_LongDate = "Long Date"
#XLS_Format_MediumDate = "Medium Date"
#XLS_Format_ShortDate = "Short date"
#XLS_Format_LongTime = "Long time"
#XLS_Format_MediumTime = "Medium time"
#XLS_Format_ShortTime = "Short time"
#XLS_Format_Currency = "Currency"
#XLS_Format_EuroCurrency = "Euro Currency"
#XLS_Format_Fixed = "Fixed"
#XLS_Format_Standard = "Standard"
#XLS_Format_Percent = "Percent"
#XLS_Format_Scientific = "Scientific"
#XLS_Format_YesNo = "Yes/No"
#XLS_Format_TrueFalse = "True/False"
#XLS_Format_OnOff = "On/Off"
;}
;-
;- STRUCTURES - PUBLIC
;-
Structure PureXLS_Alignment
Horizontal.s ; Automatic, Left, Center, Right, Fill, Justify, CenterAcrossSelection, Distributed, JustifyDistributed
Indent.s ; Unsigned Long
ReadingOrder.s ; RightToLeft, LeftToRight, Context
Rotate.s ; Double (in degrees)
ShrinkToFit.s ; Boolean
Vertical.s ; Automatic, Top, Bottom, Center, Justify, Distributed, JustifyDistributed
VerticalText.s ; Boolean
WrapText.s ; Boolean
EndStructure
Structure PureXLS_Border
Position.s ; Left, Top, Right, Bottom, DiagonalLeft, DiagonalRight
Color.s ; #RRGGBB or Automatic
LineStyle.s ; None, Continuous, Dash, Dot, DashDot, DashDotDot, SlantDashDot, Double
Weight.s ; Double (in points)
EndStructure
Structure PureXLS_Cell
PasteFormula.s ; String
ArrayRange.s ; String
Formula.s ; String
HRef.s ; String
Index.s ; Unsigned Long
MergeAcross.s ; Unsigned Long
MergeDown.s ; Unsigned Long
StyleID.s ; ID Reference
HRefScreenTip.s ; String
EndStructure
Structure PureXLS_Column
Caption.s ; String
AutoFitWidth.s ; Boolean
Hidden.s ; Boolean
Index.s ; Unsigned Long
Span.s ; Unsigned Long
StyleID.s ; ID Reference
Width.s ; Double (in points)
EndStructure
Structure PureXLS_Data
Type.s ; Number, DateTime, Boolean, String, and Error
Ticked.s ; Boolean
EndStructure
Structure PureXLS_Font
Bold.s ; Boolean
Color.s ; #RRGGBB or Automatic
FontName.s ; String
Italic.s ; Boolean
Outline.s ; Boolean
Shadow.s ; Boolean
Size.s ; Double (in points)
StrikeThrough.s ; Boolean
Underline.s ; None, Single, Double, SingleAccounting, DoubleAccounting
VerticalAlign.s ; None, Subscript, Superscript
CharSet.s ; Unsigned Long
Family.s ; Automatic, Decorative, Modern, Roman, Script, Swiss
EndStructure
Structure PureXLS_Interior
Color.s ; #RRGGBB or Automatic
Pattern.s ; None, Solid, Gray75, Gray50, Gray25, Gray125, Gray0625, HorzStripe, VertStripe, ReverseDiagStripe, DiagStripe, DiagCross, ThickDiagCross, ThinHorzStripe, ThinVertStripe, ThinReverseDiagStripe, ThinDiagStripe, ThinHorzCross, ThinDiagCross
PatternColor.s ; #RRGGBB or Automatic
EndStructure
Structure PureXLS_NumberFormat
Format.s ; General, General Number, General Date, Long Date, Medium Date, Short Date, Long Time, Medium Time, Short Time, Currency, Euro Currency, Fixed, Standard, Percent, Scientific, Yes/No, True/False, On/Off
EndStructure
Structure PureXLS_Protection
Protect.s ; Boolean
HideFormula.s ; Boolean
EndStructure
Structure PureXLS_Row
Caption.s ; String
AutoFitHeight.s ; Boolean
Height.s ; Double (in points)
Hidden.s ; Boolean
Index.s ; Unsigned Long
Span.s ; Unsigned Long
StyleID.s ; ID Reference
EndStructure
Structure PureXLS_Style
id.s ; Unique String ID
name.s ; String
Parent.s ; ID Reference
EndStructure
Structure PureXLS_Table
DefaultColumnWidth.s ; Double (in points)
DefaultRowHeight.s ; Double (in points)
ExpandedColumnCount.s ; Unsigned Long
ExpandedRowCount.s ; Unsigned Long
LeftCell.s ; Unsigned Long
StyleID.s ; ID Reference
TopCell.s ; Unsigned Long
FullColumns.s ; Boolean
FullRows.s ; Boolean
EndStructure
Structure PureXLS_Worksheet
name.s ; String - Cannot contain /, \, ?, *, [, ].
Protect.s ; Boolean
RightToLeft.s ; Boolean
EndStructure
;-
;- MACROS - PRIVATE
;-
Macro PureXLS_WriteString(id, string)
WriteString(id, string, #PB_UTF8)
EndMacro
Macro PureXLS_WriteStringN(id, string)
WriteStringN(id, string, #PB_UTF8)
EndMacro
;-
;- PROCEDURES - PRIVATE
;-
Procedure.s PureXLS_Attribute(AttrName.s, AttrValue.s)
If AttrValue
ProcedureReturn (" " + AttrName + "=" + #DQUOTE$ + AttrValue + #DQUOTE$)
EndIf
EndProcedure
;-
;- PROCEDURES - PUBLIC
;-
ProcedureDLL.l PureXLS_Workbook(FileName.s)
Protected id.l = CreateFile(#PB_Any, FileName)
If IsFile(id)
PureXLS_WriteString(id, "<?xml")
PureXLS_WriteString(id, PureXLS_Attribute("version", "1.0"))
PureXLS_WriteString(id, PureXLS_Attribute("encoding", "UTF-8"))
PureXLS_WriteStringN(id, " ?>")
PureXLS_WriteString(id, "<Workbook")
PureXLS_WriteString(id, PureXLS_Attribute("xmlns", "urn:schemas-microsoft-com:office:spreadsheet"))
PureXLS_WriteString(id, PureXLS_Attribute("xmlns:x", "urn:schemas-microsoft-com:office:excel"))
PureXLS_WriteString(id, PureXLS_Attribute("xmlns:ss", "urn:schemas-microsoft-com:office:spreadsheet"))
PureXLS_WriteString(id, PureXLS_Attribute("xmlns:html", "http://www.w3.org/TR/REC-html40"))
PureXLS_WriteStringN(id, ">")
EndIf
ProcedureReturn id
EndProcedure
ProcedureDLL.l PureXLS_EndWorkbook(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Workbook>")
CloseFile(id)
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Worksheet(id.l, name.s, Protect.s = "0", RightToLeft.s = "0")
If IsFile(id)
PureXLS_WriteString(id, "<Worksheet")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Name", name))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Protected", Protect))
PureXLS_WriteString(id, PureXLS_Attribute("ss:RightToLeft", RightToLeft))
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_WorksheetI(id.l, *x.PureXLS_Worksheet = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Worksheet")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:Name", *x\name))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Protected", *x\Protect))
PureXLS_WriteString(id, PureXLS_Attribute("ss:RightToLeft", *x\RightToLeft))
EndIf
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndWorksheet(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Worksheet>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Styles(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "<Styles>")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndStyles(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Styles>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Style(doc.l, id.s, name.s = "", Parent.s = "")
If IsFile(doc)
PureXLS_WriteString(doc, "<Style")
PureXLS_WriteString(doc, PureXLS_Attribute("ss:ID", id))
PureXLS_WriteString(doc, PureXLS_Attribute("ss:Name", name))
PureXLS_WriteString(doc, PureXLS_Attribute("ss:Parent", Parent))
PureXLS_WriteStringN(doc, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_StyleI(id.l, *x.PureXLS_Style = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Style")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:ID", *x\id))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Name", *x\name))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Parent", *x\Parent))
EndIf
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndStyle(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Style>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Font(id.l, FontName.s = "Arial", Size.s = "12", Color.s = "#000000", Bold.s = "0")
If IsFile(id)
PureXLS_WriteString(id, "<Font")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Bold", Bold))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Color", Color))
PureXLS_WriteString(id, PureXLS_Attribute("ss:FontName", FontName))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Size", Size))
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_FontI(id.l, *x.PureXLS_Font = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Font")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:Bold", *x\Bold))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Color", *x\Color))
PureXLS_WriteString(id, PureXLS_Attribute("ss:FontName", *x\FontName))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Italic", *x\Italic))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Outline", *x\Outline))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Shadow", *x\Shadow))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Size", *x\Size))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StrikeThrough", *x\StrikeThrough))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Underline", *x\Underline))
PureXLS_WriteString(id, PureXLS_Attribute("ss:VerticalAlign", *x\VerticalAlign))
PureXLS_WriteString(id, PureXLS_Attribute("x:CharSet", *x\CharSet))
PureXLS_WriteString(id, PureXLS_Attribute("x:Family", *x\Family))
EndIf
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Borders(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "<Borders>")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndBorders(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Borders>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Border(id.l, Position.s, LineStyle.s = "Continuous", Weight.s = "1", Color.s = "Automatic")
If IsFile(id)
PureXLS_WriteString(id, "<Border")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Position", Position))
PureXLS_WriteString(id, PureXLS_Attribute("ss:LineStyle", LineStyle))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Weight", Weight))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Color", Color))
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Interior(id.l, Color.s = "#FFFFFF", Pattern.s = "Solid", PatternColor.s = "")
If IsFile(id)
PureXLS_WriteString(id, "<Interior")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Color", Color))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Pattern", Pattern))
PureXLS_WriteString(id, PureXLS_Attribute("ss:PatternColor", PatternColor))
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_InteriorI(id.l, *x.PureXLS_Interior = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Interior")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:Color", *x\Color))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Pattern", *x\Pattern))
PureXLS_WriteString(id, PureXLS_Attribute("ss:PatternColor", *x\PatternColor))
EndIf
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Alignment(id.l, Horizontal.s = "Left", Vertical.s = "Bottom")
If IsFile(id)
PureXLS_WriteString(id, "<Alignment")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Horizontal", Horizontal))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Vertical", Vertical))
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_AlignmentI(id.l, *x.PureXLS_Alignment = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Alignment")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:Horizontal", *x\Horizontal))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Indent", *x\Indent))
PureXLS_WriteString(id, PureXLS_Attribute("ss:ReadingOrder", *x\ReadingOrder))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Rotate", *x\Rotate))
PureXLS_WriteString(id, PureXLS_Attribute("ss:ShrinkToFit", *x\ShrinkToFit))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Vertical", *x\Vertical))
PureXLS_WriteString(id, PureXLS_Attribute("ss:VerticalText", *x\VerticalText))
PureXLS_WriteString(id, PureXLS_Attribute("ss:WrapText", *x\WrapText))
EndIf
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Table(id.l, DefaultColumnWidth.s = "", DefaultRowHeight.s = "", StyleID.s = "")
If IsFile(id)
PureXLS_WriteString(id, "<Table")
PureXLS_WriteString(id, PureXLS_Attribute("ss:DefaultColumnWidth", DefaultColumnWidth))
PureXLS_WriteString(id, PureXLS_Attribute("ss:DefaultRowHeight", DefaultRowHeight))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", StyleID))
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_TableI(id.l, *x.PureXLS_Table = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Table")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("ss:DefaultColumnWidth", *x\DefaultColumnWidth))
PureXLS_WriteString(id, PureXLS_Attribute("ss:DefaultRowHeight", *x\DefaultRowHeight))
PureXLS_WriteString(id, PureXLS_Attribute("ss:ExpandedColumnCount", *x\ExpandedColumnCount))
PureXLS_WriteString(id, PureXLS_Attribute("ss:ExpandedRowCount", *x\ExpandedRowCount))
PureXLS_WriteString(id, PureXLS_Attribute("ss:LeftCell", *x\LeftCell))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", *x\StyleID))
PureXLS_WriteString(id, PureXLS_Attribute("ss:TopCell", *x\TopCell))
PureXLS_WriteString(id, PureXLS_Attribute("x:FullColumns", *x\FullColumns))
PureXLS_WriteString(id, PureXLS_Attribute("x:FullRows", *x\FullRows))
EndIf
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndTable(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Table>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Column(id.l, Width.s = "", StyleID.s = "")
If IsFile(id)
PureXLS_WriteString(id, "<Column")
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", StyleID))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Width", Width))
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_ColumnI(id.l, *x.PureXLS_Column = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Column")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("c:Caption", *x\Caption))
PureXLS_WriteString(id, PureXLS_Attribute("ss:AutoFitWidth", *x\AutoFitWidth))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Hidden", *x\Hidden))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Index", *x\Index))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Span", *x\Span))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", *x\StyleID))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Width", *x\Width))
EndIf
PureXLS_WriteStringN(id, "/>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Row(id.l, Height.s = "", StyleID.s = "")
If IsFile(id)
PureXLS_WriteString(id, "<Row")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Height", Height))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", StyleID))
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_RowI(id.l, *x.PureXLS_Row = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Row")
If *x
PureXLS_WriteString(id, PureXLS_Attribute("c:Caption", *x\Caption))
PureXLS_WriteString(id, PureXLS_Attribute("ss:AutoFitHeight", *x\AutoFitHeight))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Height", *x\Height))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Hidden", *x\Hidden))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Index", *x\Index))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Span", *x\Span))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", *x\StyleID))
EndIf
PureXLS_WriteStringN(id, ">")
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.l PureXLS_EndRow(id.l)
If IsFile(id)
PureXLS_WriteStringN(id, "</Row>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_Cell(id.l, Value.s, Type.s = "String", StyleID.s = "", Formula.s = "")
If IsFile(id)
PureXLS_WriteString(id, "<Cell")
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", StyleID))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Formula", Formula))
PureXLS_WriteString(id, ">")
PureXLS_WriteString(id, "<Data")
PureXLS_WriteString(id, PureXLS_Attribute("ss:Type", Type))
PureXLS_WriteString(id, ">")
PureXLS_WriteString(id, Value)
PureXLS_WriteStringN(id, "</Data></Cell>")
EndIf
EndProcedure
ProcedureDLL.l PureXLS_CellI(id.l, Value.s, *c.PureXLS_Cell = #Null, *d.PureXLS_Data = #Null)
If IsFile(id)
PureXLS_WriteString(id, "<Cell")
If *c
PureXLS_WriteString(id, PureXLS_Attribute("c:PasteFormula", *c\PasteFormula))
PureXLS_WriteString(id, PureXLS_Attribute("ss:ArrayRange", *c\ArrayRange))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Formula", *c\Formula))
PureXLS_WriteString(id, PureXLS_Attribute("ss:HRef", *c\HRef))
PureXLS_WriteString(id, PureXLS_Attribute("ss:Index", *c\Index))
PureXLS_WriteString(id, PureXLS_Attribute("ss:MergeAcross", *c\MergeAcross))
PureXLS_WriteString(id, PureXLS_Attribute("ss:MergeDown", *c\MergeDown))
PureXLS_WriteString(id, PureXLS_Attribute("ss:StyleID", *c\StyleID))
PureXLS_WriteString(id, PureXLS_Attribute("x:HRefScreenTip", *c\HRefScreenTip))
EndIf
PureXLS_WriteString(id, ">")
PureXLS_WriteString(id, "<Data")
If *d
PureXLS_WriteString(id, PureXLS_Attribute("ss:Type", *d\Type))
PureXLS_WriteString(id, PureXLS_Attribute("x:Ticked", *d\Ticked))
EndIf
PureXLS_WriteString(id, ">")
PureXLS_WriteString(id, Value)
PureXLS_WriteStringN(id, "</Data></Cell>")
EndIf
EndProcedure
;-
;- END OF INCLUDE
;-
DisableExplicit