1枚のブックに2枚のシートを持つExcelファイルを作成したいと思います。次のコードを使用しようとすると、開くことができないブックが作成されます。 しかし、1枚のシートを作成すると、そのシートは機能します。 両方のケースの添付コードを見つけて、私が逃したものを教えてください。MarkLogicでマルチシートエクセルを作成するには
シングルシートを作成する(作業中)。 2枚が優れて作成
declare namespace ms = "http://schemas.openxmlformats.org/spreadsheetml/2006/main" ;
declare namespace ns2 = "http://www.example.com/";
declare function local:AgentReport()
{
<AgentReport>
<Report>
<GroupNumber>1</GroupNumber>
<Quotes>1</Quotes>
<Converted>1</Converted>
<Conv_Rate>1</Conv_Rate>
</Report>
<Report>
<GroupNumber>2</GroupNumber>
<Quotes>2</Quotes>
<Converted>2</Converted>
<Conv_Rate>2</Conv_Rate>
</Report>
</AgentReport>
};
declare function local:getRows($x) as element(ms:row)*
{
let $first-row :=
<ms:row>
{
for $i in $x/*/*[1]/child::element()
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{fn:node-name($i)}</ms:t> </ms:is> </ms:c>
}
</ms:row>
return
(
$first-row,
for $each in $x//Report
return
<ms:row>
{
for $i in $each/*
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{$i/string()}</ms:t> </ms:is> </ms:c>
}
</ms:row>
)
};
declare function local:generate-simple-xl-ooxml($content-types as node(), $workbook as node(), $rels as node(), $workbookrels as node(), $sheet1 as node()) as binary()
{
let $manifest := <parts xmlns="xdmp:zip">
<part>[Content_Types].xml</part>
<part>workbook.xml</part>
<part>_rels/.rels</part>
<part>_rels/workbook.xml.rels</part>
<part>sheet1.xml</part>
</parts>
let $parts := ($content-types, $workbook, $rels, $workbookrels, $sheet1)
return xdmp:zip-create($manifest, $parts)
};
let $content-types := <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
</Types>
let $workbook := <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<sheets>
<sheet name="Sheet1" sheetId="1" r:id="rId1" />
</sheets>
</workbook>
let $rels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="workbook.xml"/>
</Relationships>
let $workbookrels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="sheet1.xml"/>
</Relationships>
let $date := xs:string(fn:current-date())
let $day := fn:tokenize($date, "\+")[1]
let $xml := local:AgentReport()
let $page := xdmp:tidy(xdmp:quote($xml),
<options xmlns="xdmp:tidy">
<input-xml>true</input-xml>
</options>)[2]
let $tables := $page
let $sheet1 := <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData> {local:getRows($tables)} </sheetData>
</worksheet>
let $package := local:generate-simple-xl-ooxml($content-types, $workbook, $rels, $workbookrels, $sheet1)
let $filename := "ExcelTest.xlsx"
let $disposition := concat("attachment; filename=""",$filename,"""")
let $x := xdmp:add-response-header("Content-Disposition", $disposition)
let $x := xdmp:set-response-content-type("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
let $insertReport := xdmp:document-insert(concat("/GroupNumberReport/Group-", $day, ".xlsx"), $package,(), "GroupReport")
let $saveReport := xdmp:save(concat("C:\EriePoc\DataStage-Demo\Report\Group-", $day, ".xlsx"), $package)
return fn:true()
(すなわちが壊れexcelsheetを作成する作業ではありません)。
declare namespace ms = "http://schemas.openxmlformats.org/spreadsheetml/2006/main" ;
declare namespace ns2 = "http://www.example.com/";
declare function local:AgentReport()
{
<AgentReport>
<Report>
<GroupNumber>1</GroupNumber>
<Quotes>1</Quotes>
<Converted>1</Converted>
<Conv_Rate>1</Conv_Rate>
</Report>
<Report>
<GroupNumber>2</GroupNumber>
<Quotes>2</Quotes>
<Converted>2</Converted>
<Conv_Rate>2</Conv_Rate>
</Report>
</AgentReport>
};
declare function local:getRows($x) as element(ms:row)*
{
let $first-row :=
<ms:row>
{
for $i in $x/*/*[1]/child::element()
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{fn:node-name($i)}</ms:t> </ms:is> </ms:c>
}
</ms:row>
return
(
$first-row,
for $each in $x//Report
return
<ms:row>
{
for $i in $each/*
return
<ms:c t="inlineStr"> <ms:is> <ms:t>{$i/string()}</ms:t> </ms:is> </ms:c>
}
</ms:row>
)
};
declare function local:generate-simple-xl-ooxml($content-types as node(), $workbook as node(), $rels as node(), $workbookrels as node(), $sheet1 as node(), $sheet2 as node()) as binary()
{
let $manifest := <parts xmlns="xdmp:zip">
<part>[Content_Types].xml</part>
<part>workbook.xml</part>
<part>_rels/.rels</part>
<part>_rels/workbook.xml.rels</part>
<part>sheet1.xml</part>
<part>sheet2.xml</part>
</parts>
let $parts := ($content-types, $workbook, $rels, $workbookrels, $sheet1, $sheet2)
return xdmp:zip-create($manifest, $parts)
};
let $content-types := <Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
<Default Extension="rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/>
<Default Extension="xml" ContentType="application/xml"/>
<Override PartName="/workbook.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml"/>
<Override PartName="/sheet1.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
<Override PartName="/sheet2.xml" ContentType="application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml"/>
</Types>
let $workbook := <workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
<sheets>
<sheet name="Sheet1" sheetId="1" r:id="rId1" />
<sheet name="Sheet2" sheetId="2" r:id="rId2" />
</sheets>
</workbook>
let $rels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="workbook.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="workbook.xml"/>
</Relationships>
let $workbookrels := <Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="sheet1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="sheet2.xml"/>
</Relationships>
let $date := xs:string(fn:current-date())
let $day := fn:tokenize($date, "\+")[1]
let $xml := local:AgentReport()
let $page := xdmp:tidy(xdmp:quote($xml),
<options xmlns="xdmp:tidy">
<input-xml>true</input-xml>
</options>)[2]
let $tables := $page
let $sheet1 := <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData> {local:getRows($tables)} </sheetData>
</worksheet>
let $sheet2 := <worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<sheetData> {local:getRows($tables)} </sheetData>
</worksheet>
let $package := local:generate-simple-xl-ooxml($content-types, $workbook, $rels, $workbookrels, $sheet1, $sheet2)
let $filename := "ExcelTest.xlsx"
let $disposition := concat("attachment; filename=""",$filename,"""")
let $x := xdmp:add-response-header("Content-Disposition", $disposition)
let $x := xdmp:set-response-content-type("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
let $insertReport := xdmp:document-insert(concat("/GroupNumberReport/Group-", $day, ".xlsx"), $package,(), "GroupReport")
let $saveReport := xdmp:save(concat("C:\EriePoc\DataStage-Demo\Report\Group-", $day, ".xlsx"), $package)
return fn:true()
確かに、私はそれを削除しました –