A few remarks. You can save the result to a file test.html and test.xls. For the excel file you will need to remove the xml declaration (first line).
let $orders :=
<orders>
<order id="1231">
<product>Samsung Galaxy S3</product>
<price valuta="EURO">467</price>
<quantity>3</quantity>
</order>
<order id="1232">
<product>iPhone 5</product>
<price valuta="EURO">689</price>
<quantity>5</quantity>
</order>
<order id="1233">
<product>LG E610 Optimus L5</product>
<price valuta="EURO">140</price>
<quantity>2</quantity>
</order>
</orders>
return
<html xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </meta>
<meta http-equiv="Content-Type" content="application/vnd.ms-excel; charset=utf-8"> </meta>
<style type="text/css">
table {{
border-collapse: collapse;
}}
.header {{
background-color: #E6F1F3;
text-align: left;
}}
td, th {{
border: 1px dotted #B3D4DB;
padding: 2px;
}}
.number {{
text-align: right;
}}
.subtotal {{
background-color: #E3E4E5;
text-align: right;
font-weight: bold;
}}
.total {{
background-color: #ADAEAF;
text-align: right;
font-weight: bold;
}}
</style>
</head>
<body>
<table>
<colgroup>
<col style="width: 100px;"/>
<col style="width: 200px;"/>
<col style="width: 100px;"/>
<col style="width: 100px;"/>
</colgroup>
<thead>
<tr>
<th class="header">Order No</th>
<th class="header">Product</th>
<th class="header">Price</th>
<th class="header">Quantity</th>
</tr>
</thead>
<tbody>
{
for $order in $orders/order
let $price := data($order/price)
let $quantity := data($order/quantity)
let $subtotal := $price * $quantity
return
(
<tr>
<td>{data($order/@id)}</td>
<td>{data($order/product)}</td>
<td class="number">{$price}</td>
<td class="number">{$quantity}</td>
</tr>,
<tr>
<td class="subtotal"/>
<td class="subtotal"/>
<td class="subtotal">Subtotal</td>
<td class="subtotal">{$subtotal}</td>
</tr>
)
}
<tr>
<td class="total"/>
<td class="total"/>
<td class="total">Total</td>
<td class="total">{sum(for $order in $orders/order return data($order/price) * data($order/quantity))}</td>
</tr>
</tbody>
</table>
</body>
</html>
You will get a warning from Excel but I already looked into this and there is no workaround available at this moment. I also noticed that when opening such a file from Internet Explorer it seems to hang the first time. A workaround it to Save the file the first time and open it. From that moment on Internet Explorer will be able to open the files correctly.



No comments:
Post a Comment