OpenTBS / PHP / Excel 文件损坏 - 任何属性名称不得在同一开始标记或空元素标记中出现多次
OpenTBS / PHP / Excel File Corruption - No attribute name may appear more than once in the same start tag or empty element tag
我在 PHP 中有一个 Excel 生成脚本,用于在原始应用程序中生成 Excel 文件。使用第二个应用程序,我根本无法生成 Excel 文件。
我得到的错误是:
Replaced Part: /xl/worksheets/sheet1.xml part with XML error. No
attribute name may appear more than once in the same start tag or
empty element tag. Line 2, column 1245.
为什么会出现此错误,我该如何解决?
PHP 片段
<?php
//session_start();
require_once(dirname(__FILE__).'/../../session.php');
require_once(dirname(__FILE__).'/../../shared/database/database.php');
require_once(dirname(__FILE__).'/../../shared/scripts/userManager.php');
require_once(dirname(__FILE__).'/../../shared/database/grid.php');
require_once(dirname(__FILE__).'/../../shared/lib/opentbs/tbs_class.php'); // Load the TinyButStrong template engine
require_once(dirname(__FILE__).'/../../shared/lib/opentbs/tbs_plugin_opentbs.php'); // Load the OpenTBS plugin
require_once(dirname(__FILE__).'/../actionitems/manageActionItems.php');
require_once(dirname(__FILE__).'/../../shared/scripts/manageProjects.php');
require_once(dirname(__FILE__).'/../../adminpanel/categories/manageCategories.php');
// Initialize the TBS instance
$TBS = new clsTinyButStrong(); // new instance of TBS
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); // load the OpenTBS plugin
// -----------------
// Load the template
// -----------------
$template = 'ActionItemSummaryReport.xlsx';
$TBS->LoadTemplate($template, OPENTBS_ALREADY_UTF8); // Also merge some [onload] automatic fields (depends of the type of document).
// ----------------------
// Debug mode of the demo
// ----------------------
if (true || isset($_POST['debug']) && ($_POST['debug']=='current')) $TBS->Plugin(OPENTBS_DEBUG_XML_CURRENT, true); // Display the intented XML of the current sub-file, and exit.
if (true || isset($_POST['debug']) && ($_POST['debug']=='info')) $TBS->Plugin(OPENTBS_DEBUG_INFO, true); // Display information about the document, and exit.
if (true || isset($_POST['debug']) && ($_POST['debug']=='show')) $TBS->Plugin(OPENTBS_DEBUG_XML_SHOW); // Tells TBS to display information when the document is merged. No exit.
// --------------------------------------------
// Merging and other operations on the template
// --------------------------------------------
$manageActionItems = new ManageActionItems(array(), array(), $_SESSION['ProjectID']);
$actionItems = $manageActionItems->getAllActionItems();
$manageCategories = new ManageCategories();
$data = array();
foreach($actionItems as $actionItem)
{
$actionItemID = $actionItem['ActionItemID'];
$actionItemTitle = $actionItem['ActionItemTitle'];
$actionItemStatement = $actionItem['ActionItemStatement'];
$ownerLastFirst = $manageActionItems->getUser($actionItem['OwnerID']);
$assignedDate = $manageActionItems->formatDate($actionItem['AssignedDate']);
$originalDueDate = $manageActionItems->formatDate($actionItem['DueDate']);
$ecd = $manageActionItems->formatDate($actionItem['ECD']);
$closureDate = $manageActionItems->formatDate($actionItem['ClosedDate']);
$completionDate = $manageActionItems->formatDate($actionItem['CompletionDate']);
$closureCriteria = $actionItem['ClosureCriteria'];
$category1 = $actionItem['Category1'];
$category2 = $actionItem['Category2'];
$category3 = $actionItem['Category3'];
$category4 = $actionItem['Category4'];
$notes = $actionItem['Notes'];
$altOwner = $actionItem['AltOwner'];
$criticality = $actionItem['Criticality'];
$assignor = $actionItem['Assignor'];
array_push($data, array(
'ActionItemID' => $actionItemID,
'ActionItemTitle' => $actionItemTitle,
'AssignedDate' => str_replace('00/00/0000', "", $assignedDate),
'DueDate' => str_replace('00/00/0000', "", $originalDueDate),
'ECD' => str_replace('00/00/0000', "", $ecd),
'Owner' => $ownerLastFirst,
'ClosedDate' => str_replace('00/00/0000', "", $closureDate),
'CompletionDate' => str_replace('00/00/0000', "", $completionDate),
'Criticality' => $criticality,
'Assignor' => $assignor,
'AltOwner' => $altOwner,
'Category1' => $manageCategories->getCategoryValue($category1),
'Category2' => $manageCategories->getCategoryValue($category2),
'Category3' =>$manageCategories->getCategoryValue($category3),
'Category4' => $manageCategories->getCategoryValue($category4),
'Notes' => $notes
//'ActionItemStatement' => $actionItemStatement,
//'ClosureCriteria' => $closureCriteria,
//'ClosureStatement' => ''
));
}
$categoryNames = array();
array_push($categoryNames, array(
'Category1Name' => $manageCategories->getCategoryName('1'),
'Category2Name' => $manageCategories->getCategoryName('2'),
'Category3Name' => $manageCategories->getCategoryName('3'),
'Category4Name' => $manageCategories->getCategoryName('4')
));
$TBS->MergeBlock('a', $data);
$TBS->MergeBlock('b', $categoryNames);
$manageProjectName = new ManageProjects();
$project = array('ProjectName' => $manageProjectName->getProjects());
$TBS->MergeField('p', $project);
// Define the name of the output file
$save_as = (isset($_POST['save_as']) && (trim($_POST['save_as'])!=='') && ($_SERVER['SERVER_NAME']=='localhost')) ? trim($_POST['save_as']) : '';
$output_file_name = str_replace('.', '_'.date('Y-m-d').$save_as.'.', 'ActionItemSummaryReport.xlsx');
if ($save_as==='') {
// Output the result as a downloadable file (only streaming, no data saved in the server)
$TBS->Show(OPENTBS_DOWNLOAD, $output_file_name); // Also merges all [onshow] automatic fields.
// Be sure that no more output is done, otherwise the download file is corrupted with extra data.
exit();
} else {
// Output the result as a file on the server.
$TBS->Show(OPENTBS_FILE, $output_file_name); // Also merges all [onshow] automatic fields.
// The script can continue.
exit("File [$output_file_name] has been created.");
}
?>
如果有帮助,这是我的合并输出。
* OPENTBS DEBUG MODE: if the star, (*) on the left before the word OPENTBS, is not the very first character of this page, then your
merged Document will be corrupted when you use the OPENTBS_DOWNLOAD option. If there is a PHP error message, then you have to fix it.
If they are blank spaces, line beaks, or other unexpected characters, then you have to check your code in order to avoid them.
------------------------------
INFORMATION
------------------------------
* Debug command: OPENTBS_DEBUG_XML_CURRENT
* OpenTBS version: 1.9.5
* TinyButStrong version: 3.10.1
* PHP version: 5.5.12YES
* Opened document: ActionItemSummaryReport.xlsx
* Activated features for document type: openxml/xlsx
* Deleted files in the archive:
- xl/calcChain.xml
* Added files in the archive: none
* Modified files in the archive:
- xl/_rels/workbook.xml.rels
- xl/worksheets/sheet1.xml
------------------------------
File merged with OpenTBS (XML reformated for debuging only): xl/_rels/workbook.xml.rels
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet2.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
</Relationships>
------------------------------
File merged with OpenTBS (XML reformated for debuging only): xl/worksheets/sheet1.xml
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<dimension ref="A1:P107"/>
<sheetViews>
<sheetView tabSelected="1" zoomScaleNormal="100" workbookViewId="0">
<pane ySplit="2" topLeftCell="A3" activePane="bottomLeft" state="frozen"/>
<selection pane="bottomLeft" sqref="A1:A1048576"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultColWidth="11.42578125" defaultRowHeight="15" x14ac:dyDescent="0.25"/>
<cols>
<col min="1" max="1" width="14.7109375" hidden="1" customWidth="1"/>
<col min="2" max="3" width="14.7109375" customWidth="1"/>
<col min="4" max="4" width="14.7109375" style="10" customWidth="1"/>
<col min="5" max="6" width="13.5703125" style="10" customWidth="1"/>
<col min="7" max="8" width="16" style="10" customWidth="1"/>
<col min="9" max="9" width="12" customWidth="1"/>
<col min="10" max="14" width="14.7109375" customWidth="1"/>
<col min="16" max="16" width="20.85546875" bestFit="1" customWidth="1"/>
</cols>
<sheetData>
<row r="1" spans="1:16" x14ac:dyDescent="0.25">
<c r="B1" s="6" t="s">
<v>
32
</v>
</c>
</row>
<row r="2" spans="1:16" s="6" customFormat="1" x14ac:dyDescent="0.25">
<c r="A2" s="7" t="s">
<v>
1
</v>
</c>
<c r="B2" s="7" t="s">
<v>
13
</v>
</c>
<c r="C2" s="7" t="s">
<v>
23
</v>
</c>
<c r="D2" s="9" t="s">
<v>
4
</v>
</c>
<c r="E2" s="9" t="s">
<v>
5
</v>
</c>
<c r="F2" s="9" t="s">
<v>
2
</v>
</c>
<c r="G2" s="9" t="s">
<v>
18
</v>
</c>
<c r="H2" s="9" t="s">
<v>
6
</v>
</c>
<c r="I2" s="7" t="s">
<v>
20
</v>
</c>
<c r="J2" s="7" t="s">
<v>
7
</v>
</c>
<c r="K2" s="7" t="s">
<v>
9
</v>
</c>
<c r="L2" s="7" t="s">
<v>
11
</v>
</c>
<c r="M2" s="7" t="s">
<v>
28
</v>
</c>
<c r="N2" s="7" t="s">
<v>
29
</v>
</c>
<c r="O2" s="7" t="s">
<v>
30
</v>
</c>
<c r="P2" s="7" t="s">
<v>
31
</v>
</c>
</row>
<row r="3" spans="1:16" s="3" customFormat="1" x14ac:dyDescent="0.25">
<c r="A3" s="1" t="s">
<v>
3
</v>
</c>
<c r="B3" s="1" t="e">
<f>
VALUE(A:A)
</f>
<v>
#VALUE!
</v>
</c>
<c r="C3" s="1" t="s">
<v>
22
</v>
</c>
<c r="D3" s="8" t="s">
<v>
14
</v>
</c>
<c r="E3" s="8" t="s">
<v>
15
</v>
</c>
<c r="F3" s="8" t="s">
<v>
16
</v>
</c>
<c r="G3" s="8" t="s">
<v>
19
</v>
</c>
<c r="H3" s="8" t="s">
<v>
17
</v>
</c>
<c r="I3" s="8" t="s">
<v>
21
</v>
</c>
<c r="J3" s="1" t="s">
<v>
8
</v>
</c>
<c r="K3" s="1" t="s">
<v>
10
</v>
</c>
<c r="L3" s="2" t="s">
<v>
12
</v>
</c>
<c r="M3" s="2" t="s">
<v>
24
</v>
</c>
<c r="N3" s="2" t="s">
<v>
25
</v>
</c>
<c r="O3" s="1" t="s">
<v>
26
</v>
</c>
<c r="P3" s="1" t="s">
<v>
27
</v>
</c>
</row>
<row r="4" spans="1:16" x14ac:dyDescent="0.25">
<c r="B4" s="5"/>
</row>
<row r="5" spans="1:16" x14ac:dyDescent="0.25">
<c r="B5" s="5"/>
</row>
<row r="6" spans="1:16" x14ac:dyDescent="0.25">
<c r="B6" s="5"/>
</row>
<row r="7" spans="1:16" x14ac:dyDescent="0.25">
<c r="B7" s="5"/>
</row>
<row r="8" spans="1:16" x14ac:dyDescent="0.25">
<c r="B8" s="5"/>
</row>
<row r="9" spans="1:16" x14ac:dyDescent="0.25">
<c r="B9" s="5"/>
</row>
<row r="10" spans="1:16" x14ac:dyDescent="0.25">
<c r="B10" s="5"/>
</row>
<row r="11" spans="1:16" x14ac:dyDescent="0.25">
<c r="B11" s="5"/>
</row>
<row r="12" spans="1:16" x14ac:dyDescent="0.25">
<c r="B12" s="5"/>
</row>
<row r="13" spans="1:16" x14ac:dyDescent="0.25">
<c r="B13" s="5"/>
</row>
<row r="14" spans="1:16" x14ac:dyDescent="0.25">
<c r="B14" s="5"/>
</row>
<row r="15" spans="1:16" x14ac:dyDescent="0.25">
<c r="B15" s="5"/>
</row>
<row r="16" spans="1:16" x14ac:dyDescent="0.25">
<c r="B16" s="5"/>
</row>
<row r="17" spans="2:2" x14ac:dyDescent="0.25">
<c r="B17" s="5"/>
</row>
<row r="18" spans="2:2" x14ac:dyDescent="0.25">
<c r="B18" s="5"/>
</row>
<row r="19" spans="2:2" x14ac:dyDescent="0.25">
<c r="B19" s="5"/>
</row>
<row r="20" spans="2:2" x14ac:dyDescent="0.25">
<c r="B20" s="5"/>
</row>
<row r="21" spans="2:2" x14ac:dyDescent="0.25">
<c r="B21" s="5"/>
</row>
<row r="22" spans="2:2" x14ac:dyDescent="0.25">
<c r="B22" s="5"/>
</row>
<row r="23" spans="2:2" x14ac:dyDescent="0.25">
<c r="B23" s="5"/>
</row>
<row r="24" spans="2:2" x14ac:dyDescent="0.25">
<c r="B24" s="5"/>
</row>
<row r="25" spans="2:2" x14ac:dyDescent="0.25">
<c r="B25" s="5"/>
</row>
<row r="26" spans="2:2" x14ac:dyDescent="0.25">
<c r="B26" s="5"/>
</row>
<row r="27" spans="2:2" x14ac:dyDescent="0.25">
<c r="B27" s="5"/>
</row>
<row r="28" spans="2:2" x14ac:dyDescent="0.25">
<c r="B28" s="5"/>
</row>
<row r="29" spans="2:2" x14ac:dyDescent="0.25">
<c r="B29" s="5"/>
</row>
<row r="30" spans="2:2" x14ac:dyDescent="0.25">
<c r="B30" s="5"/>
</row>
<row r="31" spans="2:2" x14ac:dyDescent="0.25">
<c r="B31" s="5"/>
</row>
<row r="32" spans="2:2" x14ac:dyDescent="0.25">
<c r="B32" s="5"/>
</row>
<row r="33" spans="2:2" x14ac:dyDescent="0.25">
<c r="B33" s="5"/>
</row>
<row r="34" spans="2:2" x14ac:dyDescent="0.25">
<c r="B34" s="5"/>
</row>
<row r="35" spans="2:2" x14ac:dyDescent="0.25">
<c r="B35" s="5"/>
</row>
<row r="36" spans="2:2" x14ac:dyDescent="0.25">
<c r="B36" s="5"/>
</row>
<row r="37" spans="2:2" x14ac:dyDescent="0.25">
<c r="B37" s="5"/>
</row>
<row r="38" spans="2:2" x14ac:dyDescent="0.25">
<c r="B38" s="5"/>
</row>
<row r="39" spans="2:2" x14ac:dyDescent="0.25">
<c r="B39" s="5"/>
</row>
<row r="40" spans="2:2" x14ac:dyDescent="0.25">
<c r="B40" s="5"/>
</row>
<row r="41" spans="2:2" x14ac:dyDescent="0.25">
<c r="B41" s="5"/>
</row>
<row r="42" spans="2:2" x14ac:dyDescent="0.25">
<c r="B42" s="4"/>
</row>
<row r="43" spans="2:2" x14ac:dyDescent="0.25">
<c r="B43" s="4"/>
</row>
<row r="44" spans="2:2" x14ac:dyDescent="0.25">
<c r="B44" s="4"/>
</row>
<row r="45" spans="2:2" x14ac:dyDescent="0.25">
<c r="B45" s="4"/>
</row>
<row r="46" spans="2:2" x14ac:dyDescent="0.25">
<c r="B46" s="4"/>
</row>
<row r="47" spans="2:2" x14ac:dyDescent="0.25">
<c r="B47" s="4"/>
</row>
<row r="48" spans="2:2" x14ac:dyDescent="0.25">
<c r="B48" s="4"/>
</row>
<row r="49" spans="2:2" x14ac:dyDescent="0.25">
<c r="B49" s="4"/>
</row>
<row r="50" spans="2:2" x14ac:dyDescent="0.25">
<c r="B50" s="4"/>
</row>
<row r="51" spans="2:2" x14ac:dyDescent="0.25">
<c r="B51" s="4"/>
</row>
<row r="52" spans="2:2" x14ac:dyDescent="0.25">
<c r="B52" s="4"/>
</row>
<row r="53" spans="2:2" x14ac:dyDescent="0.25">
<c r="B53" s="4"/>
</row>
<row r="54" spans="2:2" x14ac:dyDescent="0.25">
<c r="B54" s="4"/>
</row>
<row r="55" spans="2:2" x14ac:dyDescent="0.25">
<c r="B55" s="4"/>
</row>
<row r="56" spans="2:2" x14ac:dyDescent="0.25">
<c r="B56" s="4"/>
</row>
<row r="57" spans="2:2" x14ac:dyDescent="0.25">
<c r="B57" s="4"/>
</row>
<row r="58" spans="2:2" x14ac:dyDescent="0.25">
<c r="B58" s="4"/>
</row>
<row r="59" spans="2:2" x14ac:dyDescent="0.25">
<c r="B59" s="4"/>
</row>
<row r="60" spans="2:2" x14ac:dyDescent="0.25">
<c r="B60" s="4"/>
</row>
<row r="61" spans="2:2" x14ac:dyDescent="0.25">
<c r="B61" s="4"/>
</row>
<row r="62" spans="2:2" x14ac:dyDescent="0.25">
<c r="B62" s="4"/>
</row>
<row r="63" spans="2:2" x14ac:dyDescent="0.25">
<c r="B63" s="4"/>
</row>
<row r="64" spans="2:2" x14ac:dyDescent="0.25">
<c r="B64" s="4"/>
</row>
<row r="65" spans="2:2" x14ac:dyDescent="0.25">
<c r="B65" s="4"/>
</row>
<row r="66" spans="2:2" x14ac:dyDescent="0.25">
<c r="B66" s="4"/>
</row>
<row r="67" spans="2:2" x14ac:dyDescent="0.25">
<c r="B67" s="4"/>
</row>
<row r="68" spans="2:2" x14ac:dyDescent="0.25">
<c r="B68" s="4"/>
</row>
<row r="69" spans="2:2" x14ac:dyDescent="0.25">
<c r="B69" s="4"/>
</row>
<row r="70" spans="2:2" x14ac:dyDescent="0.25">
<c r="B70" s="4"/>
</row>
<row r="71" spans="2:2" x14ac:dyDescent="0.25">
<c r="B71" s="4"/>
</row>
<row r="72" spans="2:2" x14ac:dyDescent="0.25">
<c r="B72" s="4"/>
</row>
<row r="73" spans="2:2" x14ac:dyDescent="0.25">
<c r="B73" s="4"/>
</row>
<row r="74" spans="2:2" x14ac:dyDescent="0.25">
<c r="B74" s="4"/>
</row>
<row r="75" spans="2:2" x14ac:dyDescent="0.25">
<c r="B75" s="4"/>
</row>
<row r="76" spans="2:2" x14ac:dyDescent="0.25">
<c r="B76" s="4"/>
</row>
<row r="77" spans="2:2" x14ac:dyDescent="0.25">
<c r="B77" s="4"/>
</row>
<row r="78" spans="2:2" x14ac:dyDescent="0.25">
<c r="B78" s="4"/>
</row>
<row r="79" spans="2:2" x14ac:dyDescent="0.25">
<c r="B79" s="4"/>
</row>
<row r="80" spans="2:2" x14ac:dyDescent="0.25">
<c r="B80" s="4"/>
</row>
<row r="81" spans="2:2" x14ac:dyDescent="0.25">
<c r="B81" s="4"/>
</row>
<row r="82" spans="2:2" x14ac:dyDescent="0.25">
<c r="B82" s="4"/>
</row>
<row r="83" spans="2:2" x14ac:dyDescent="0.25">
<c r="B83" s="4"/>
</row>
<row r="84" spans="2:2" x14ac:dyDescent="0.25">
<c r="B84" s="4"/>
</row>
<row r="85" spans="2:2" x14ac:dyDescent="0.25">
<c r="B85" s="4"/>
</row>
<row r="86" spans="2:2" x14ac:dyDescent="0.25">
<c r="B86" s="4"/>
</row>
<row r="87" spans="2:2" x14ac:dyDescent="0.25">
<c r="B87" s="4"/>
</row>
<row r="88" spans="2:2" x14ac:dyDescent="0.25">
<c r="B88" s="4"/>
</row>
<row r="89" spans="2:2" x14ac:dyDescent="0.25">
<c r="B89" s="4"/>
</row>
<row r="90" spans="2:2" x14ac:dyDescent="0.25">
<c r="B90" s="4"/>
</row>
<row r="91" spans="2:2" x14ac:dyDescent="0.25">
<c r="B91" s="4"/>
</row>
<row r="92" spans="2:2" x14ac:dyDescent="0.25">
<c r="B92" s="4"/>
</row>
<row r="93" spans="2:2" x14ac:dyDescent="0.25">
<c r="B93" s="4"/>
</row>
<row r="94" spans="2:2" x14ac:dyDescent="0.25">
<c r="B94" s="4"/>
</row>
<row r="95" spans="2:2" x14ac:dyDescent="0.25">
<c r="B95" s="4"/>
</row>
<row r="96" spans="2:2" x14ac:dyDescent="0.25">
<c r="B96" s="4"/>
</row>
<row r="97" spans="2:2" x14ac:dyDescent="0.25">
<c r="B97" s="4"/>
</row>
<row r="98" spans="2:2" x14ac:dyDescent="0.25">
<c r="B98" s="4"/>
</row>
<row r="99" spans="2:2" x14ac:dyDescent="0.25">
<c r="B99" s="4"/>
</row>
<row r="100" spans="2:2" x14ac:dyDescent="0.25">
<c r="B100" s="4"/>
</row>
<row r="101" spans="2:2" x14ac:dyDescent="0.25">
<c r="B101" s="4"/>
</row>
<row r="102" spans="2:2" x14ac:dyDescent="0.25">
<c r="B102" s="4"/>
</row>
<row r="103" spans="2:2" x14ac:dyDescent="0.25">
<c r="B103" s="4"/>
</row>
<row r="104" spans="2:2" x14ac:dyDescent="0.25">
<c r="B104" s="4"/>
</row>
<row r="105" spans="2:2" x14ac:dyDescent="0.25">
<c r="B105" s="4"/>
</row>
<row r="106" spans="2:2" x14ac:dyDescent="0.25">
<c r="B106" s="4"/>
</row>
<row r="107" spans="2:2" x14ac:dyDescent="0.25">
<c r="B107" s="4"/>
</row>
</sheetData>
<autoFilter ref="A2:P2"/>
<phoneticPr fontId="1" type="noConversion"/>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
<pageSetup paperSize="9" orientation="portrait" r:id="rId1"/>
</worksheet>
编辑
输出应该是这样的。我的 sharedStrings 出现在下方但没有出现在上方。
为什么上面没有显示sharedStrings.xml?
File merged with OpenTBS (XML reformated for debuging only): xl/sharedStrings.xml
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="32" uniqueCount="32">
<si>
<t>
[p.ProjectName]
</t>
</si>
<si>
<t>
ID
</t>
</si>
<si>
<t>
ActionItemID
</t>
</si>
<si>
<t>
Action Item Title
</t>
</si>
<si>
<t>
Assigned Date
</t>
</si>
<si>
<t>
Due Date
</t>
</si>
<si>
<t>
ECD
</t>
</si>
<si>
<t>
Completion Date
</t>
</si>
<si>
<t>
Closed Date
</t>
</si>
<si>
<t>
Owner
</t>
</si>
<si>
<t>
Criticality
</t>
</si>
<si>
<t>
Assignor
</t>
</si>
<si>
<t>
Alt Owner
</t>
</si>
<si>
<t>
[b.Category1Name]
</t>
</si>
<si>
<t>
[b.Category2Name]
</t>
</si>
<si>
<t>
[b.Category3Name]
</t>
</si>
<si>
<t>
[b.Category4Name]
</t>
</si>
<si>
<t>
[a.ActionItemID;block=tbs:row]
</t>
</si>
<si>
<t>
[a.ActionItemTitle]
</t>
</si>
<si>
<t>
[a.AssignedDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.DueDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.ECD;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.CompletionDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.ClosedDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.Owner]
</t>
</si>
<si>
<t>
[a.Criticality]
</t>
</si>
<si>
<t>
[a.Assignor]
</t>
</si>
<si>
<t>
[a.AltOwner]
</t>
</si>
<si>
<t>
[a.Category1]
</t>
</si>
<si>
<t>
[a.Category2]
</t>
</si>
<si>
<t>
[a.Category3]
</t>
</si>
<si>
<t>
[a.Category4]
</t>
</si>
</sst>
尝试最新版本后,我能够使 Excel 脚本运行。从 1.9.5 升级到 1.9.6 是解决方案。
我在 PHP 中有一个 Excel 生成脚本,用于在原始应用程序中生成 Excel 文件。使用第二个应用程序,我根本无法生成 Excel 文件。
我得到的错误是:
Replaced Part: /xl/worksheets/sheet1.xml part with XML error. No attribute name may appear more than once in the same start tag or empty element tag. Line 2, column 1245.
为什么会出现此错误,我该如何解决?
PHP 片段
<?php
//session_start();
require_once(dirname(__FILE__).'/../../session.php');
require_once(dirname(__FILE__).'/../../shared/database/database.php');
require_once(dirname(__FILE__).'/../../shared/scripts/userManager.php');
require_once(dirname(__FILE__).'/../../shared/database/grid.php');
require_once(dirname(__FILE__).'/../../shared/lib/opentbs/tbs_class.php'); // Load the TinyButStrong template engine
require_once(dirname(__FILE__).'/../../shared/lib/opentbs/tbs_plugin_opentbs.php'); // Load the OpenTBS plugin
require_once(dirname(__FILE__).'/../actionitems/manageActionItems.php');
require_once(dirname(__FILE__).'/../../shared/scripts/manageProjects.php');
require_once(dirname(__FILE__).'/../../adminpanel/categories/manageCategories.php');
// Initialize the TBS instance
$TBS = new clsTinyButStrong(); // new instance of TBS
$TBS->Plugin(TBS_INSTALL, OPENTBS_PLUGIN); // load the OpenTBS plugin
// -----------------
// Load the template
// -----------------
$template = 'ActionItemSummaryReport.xlsx';
$TBS->LoadTemplate($template, OPENTBS_ALREADY_UTF8); // Also merge some [onload] automatic fields (depends of the type of document).
// ----------------------
// Debug mode of the demo
// ----------------------
if (true || isset($_POST['debug']) && ($_POST['debug']=='current')) $TBS->Plugin(OPENTBS_DEBUG_XML_CURRENT, true); // Display the intented XML of the current sub-file, and exit.
if (true || isset($_POST['debug']) && ($_POST['debug']=='info')) $TBS->Plugin(OPENTBS_DEBUG_INFO, true); // Display information about the document, and exit.
if (true || isset($_POST['debug']) && ($_POST['debug']=='show')) $TBS->Plugin(OPENTBS_DEBUG_XML_SHOW); // Tells TBS to display information when the document is merged. No exit.
// --------------------------------------------
// Merging and other operations on the template
// --------------------------------------------
$manageActionItems = new ManageActionItems(array(), array(), $_SESSION['ProjectID']);
$actionItems = $manageActionItems->getAllActionItems();
$manageCategories = new ManageCategories();
$data = array();
foreach($actionItems as $actionItem)
{
$actionItemID = $actionItem['ActionItemID'];
$actionItemTitle = $actionItem['ActionItemTitle'];
$actionItemStatement = $actionItem['ActionItemStatement'];
$ownerLastFirst = $manageActionItems->getUser($actionItem['OwnerID']);
$assignedDate = $manageActionItems->formatDate($actionItem['AssignedDate']);
$originalDueDate = $manageActionItems->formatDate($actionItem['DueDate']);
$ecd = $manageActionItems->formatDate($actionItem['ECD']);
$closureDate = $manageActionItems->formatDate($actionItem['ClosedDate']);
$completionDate = $manageActionItems->formatDate($actionItem['CompletionDate']);
$closureCriteria = $actionItem['ClosureCriteria'];
$category1 = $actionItem['Category1'];
$category2 = $actionItem['Category2'];
$category3 = $actionItem['Category3'];
$category4 = $actionItem['Category4'];
$notes = $actionItem['Notes'];
$altOwner = $actionItem['AltOwner'];
$criticality = $actionItem['Criticality'];
$assignor = $actionItem['Assignor'];
array_push($data, array(
'ActionItemID' => $actionItemID,
'ActionItemTitle' => $actionItemTitle,
'AssignedDate' => str_replace('00/00/0000', "", $assignedDate),
'DueDate' => str_replace('00/00/0000', "", $originalDueDate),
'ECD' => str_replace('00/00/0000', "", $ecd),
'Owner' => $ownerLastFirst,
'ClosedDate' => str_replace('00/00/0000', "", $closureDate),
'CompletionDate' => str_replace('00/00/0000', "", $completionDate),
'Criticality' => $criticality,
'Assignor' => $assignor,
'AltOwner' => $altOwner,
'Category1' => $manageCategories->getCategoryValue($category1),
'Category2' => $manageCategories->getCategoryValue($category2),
'Category3' =>$manageCategories->getCategoryValue($category3),
'Category4' => $manageCategories->getCategoryValue($category4),
'Notes' => $notes
//'ActionItemStatement' => $actionItemStatement,
//'ClosureCriteria' => $closureCriteria,
//'ClosureStatement' => ''
));
}
$categoryNames = array();
array_push($categoryNames, array(
'Category1Name' => $manageCategories->getCategoryName('1'),
'Category2Name' => $manageCategories->getCategoryName('2'),
'Category3Name' => $manageCategories->getCategoryName('3'),
'Category4Name' => $manageCategories->getCategoryName('4')
));
$TBS->MergeBlock('a', $data);
$TBS->MergeBlock('b', $categoryNames);
$manageProjectName = new ManageProjects();
$project = array('ProjectName' => $manageProjectName->getProjects());
$TBS->MergeField('p', $project);
// Define the name of the output file
$save_as = (isset($_POST['save_as']) && (trim($_POST['save_as'])!=='') && ($_SERVER['SERVER_NAME']=='localhost')) ? trim($_POST['save_as']) : '';
$output_file_name = str_replace('.', '_'.date('Y-m-d').$save_as.'.', 'ActionItemSummaryReport.xlsx');
if ($save_as==='') {
// Output the result as a downloadable file (only streaming, no data saved in the server)
$TBS->Show(OPENTBS_DOWNLOAD, $output_file_name); // Also merges all [onshow] automatic fields.
// Be sure that no more output is done, otherwise the download file is corrupted with extra data.
exit();
} else {
// Output the result as a file on the server.
$TBS->Show(OPENTBS_FILE, $output_file_name); // Also merges all [onshow] automatic fields.
// The script can continue.
exit("File [$output_file_name] has been created.");
}
?>
如果有帮助,这是我的合并输出。
* OPENTBS DEBUG MODE: if the star, (*) on the left before the word OPENTBS, is not the very first character of this page, then your
merged Document will be corrupted when you use the OPENTBS_DOWNLOAD option. If there is a PHP error message, then you have to fix it.
If they are blank spaces, line beaks, or other unexpected characters, then you have to check your code in order to avoid them.
------------------------------
INFORMATION
------------------------------
* Debug command: OPENTBS_DEBUG_XML_CURRENT
* OpenTBS version: 1.9.5
* TinyButStrong version: 3.10.1
* PHP version: 5.5.12YES
* Opened document: ActionItemSummaryReport.xlsx
* Activated features for document type: openxml/xlsx
* Deleted files in the archive:
- xl/calcChain.xml
* Added files in the archive: none
* Modified files in the archive:
- xl/_rels/workbook.xml.rels
- xl/worksheets/sheet1.xml
------------------------------
File merged with OpenTBS (XML reformated for debuging only): xl/_rels/workbook.xml.rels
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
<Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
<Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet2.xml"/>
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet" Target="worksheets/sheet1.xml"/>
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings" Target="sharedStrings.xml"/>
<Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
</Relationships>
------------------------------
File merged with OpenTBS (XML reformated for debuging only): xl/worksheets/sheet1.xml
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac">
<dimension ref="A1:P107"/>
<sheetViews>
<sheetView tabSelected="1" zoomScaleNormal="100" workbookViewId="0">
<pane ySplit="2" topLeftCell="A3" activePane="bottomLeft" state="frozen"/>
<selection pane="bottomLeft" sqref="A1:A1048576"/>
</sheetView>
</sheetViews>
<sheetFormatPr defaultColWidth="11.42578125" defaultRowHeight="15" x14ac:dyDescent="0.25"/>
<cols>
<col min="1" max="1" width="14.7109375" hidden="1" customWidth="1"/>
<col min="2" max="3" width="14.7109375" customWidth="1"/>
<col min="4" max="4" width="14.7109375" style="10" customWidth="1"/>
<col min="5" max="6" width="13.5703125" style="10" customWidth="1"/>
<col min="7" max="8" width="16" style="10" customWidth="1"/>
<col min="9" max="9" width="12" customWidth="1"/>
<col min="10" max="14" width="14.7109375" customWidth="1"/>
<col min="16" max="16" width="20.85546875" bestFit="1" customWidth="1"/>
</cols>
<sheetData>
<row r="1" spans="1:16" x14ac:dyDescent="0.25">
<c r="B1" s="6" t="s">
<v>
32
</v>
</c>
</row>
<row r="2" spans="1:16" s="6" customFormat="1" x14ac:dyDescent="0.25">
<c r="A2" s="7" t="s">
<v>
1
</v>
</c>
<c r="B2" s="7" t="s">
<v>
13
</v>
</c>
<c r="C2" s="7" t="s">
<v>
23
</v>
</c>
<c r="D2" s="9" t="s">
<v>
4
</v>
</c>
<c r="E2" s="9" t="s">
<v>
5
</v>
</c>
<c r="F2" s="9" t="s">
<v>
2
</v>
</c>
<c r="G2" s="9" t="s">
<v>
18
</v>
</c>
<c r="H2" s="9" t="s">
<v>
6
</v>
</c>
<c r="I2" s="7" t="s">
<v>
20
</v>
</c>
<c r="J2" s="7" t="s">
<v>
7
</v>
</c>
<c r="K2" s="7" t="s">
<v>
9
</v>
</c>
<c r="L2" s="7" t="s">
<v>
11
</v>
</c>
<c r="M2" s="7" t="s">
<v>
28
</v>
</c>
<c r="N2" s="7" t="s">
<v>
29
</v>
</c>
<c r="O2" s="7" t="s">
<v>
30
</v>
</c>
<c r="P2" s="7" t="s">
<v>
31
</v>
</c>
</row>
<row r="3" spans="1:16" s="3" customFormat="1" x14ac:dyDescent="0.25">
<c r="A3" s="1" t="s">
<v>
3
</v>
</c>
<c r="B3" s="1" t="e">
<f>
VALUE(A:A)
</f>
<v>
#VALUE!
</v>
</c>
<c r="C3" s="1" t="s">
<v>
22
</v>
</c>
<c r="D3" s="8" t="s">
<v>
14
</v>
</c>
<c r="E3" s="8" t="s">
<v>
15
</v>
</c>
<c r="F3" s="8" t="s">
<v>
16
</v>
</c>
<c r="G3" s="8" t="s">
<v>
19
</v>
</c>
<c r="H3" s="8" t="s">
<v>
17
</v>
</c>
<c r="I3" s="8" t="s">
<v>
21
</v>
</c>
<c r="J3" s="1" t="s">
<v>
8
</v>
</c>
<c r="K3" s="1" t="s">
<v>
10
</v>
</c>
<c r="L3" s="2" t="s">
<v>
12
</v>
</c>
<c r="M3" s="2" t="s">
<v>
24
</v>
</c>
<c r="N3" s="2" t="s">
<v>
25
</v>
</c>
<c r="O3" s="1" t="s">
<v>
26
</v>
</c>
<c r="P3" s="1" t="s">
<v>
27
</v>
</c>
</row>
<row r="4" spans="1:16" x14ac:dyDescent="0.25">
<c r="B4" s="5"/>
</row>
<row r="5" spans="1:16" x14ac:dyDescent="0.25">
<c r="B5" s="5"/>
</row>
<row r="6" spans="1:16" x14ac:dyDescent="0.25">
<c r="B6" s="5"/>
</row>
<row r="7" spans="1:16" x14ac:dyDescent="0.25">
<c r="B7" s="5"/>
</row>
<row r="8" spans="1:16" x14ac:dyDescent="0.25">
<c r="B8" s="5"/>
</row>
<row r="9" spans="1:16" x14ac:dyDescent="0.25">
<c r="B9" s="5"/>
</row>
<row r="10" spans="1:16" x14ac:dyDescent="0.25">
<c r="B10" s="5"/>
</row>
<row r="11" spans="1:16" x14ac:dyDescent="0.25">
<c r="B11" s="5"/>
</row>
<row r="12" spans="1:16" x14ac:dyDescent="0.25">
<c r="B12" s="5"/>
</row>
<row r="13" spans="1:16" x14ac:dyDescent="0.25">
<c r="B13" s="5"/>
</row>
<row r="14" spans="1:16" x14ac:dyDescent="0.25">
<c r="B14" s="5"/>
</row>
<row r="15" spans="1:16" x14ac:dyDescent="0.25">
<c r="B15" s="5"/>
</row>
<row r="16" spans="1:16" x14ac:dyDescent="0.25">
<c r="B16" s="5"/>
</row>
<row r="17" spans="2:2" x14ac:dyDescent="0.25">
<c r="B17" s="5"/>
</row>
<row r="18" spans="2:2" x14ac:dyDescent="0.25">
<c r="B18" s="5"/>
</row>
<row r="19" spans="2:2" x14ac:dyDescent="0.25">
<c r="B19" s="5"/>
</row>
<row r="20" spans="2:2" x14ac:dyDescent="0.25">
<c r="B20" s="5"/>
</row>
<row r="21" spans="2:2" x14ac:dyDescent="0.25">
<c r="B21" s="5"/>
</row>
<row r="22" spans="2:2" x14ac:dyDescent="0.25">
<c r="B22" s="5"/>
</row>
<row r="23" spans="2:2" x14ac:dyDescent="0.25">
<c r="B23" s="5"/>
</row>
<row r="24" spans="2:2" x14ac:dyDescent="0.25">
<c r="B24" s="5"/>
</row>
<row r="25" spans="2:2" x14ac:dyDescent="0.25">
<c r="B25" s="5"/>
</row>
<row r="26" spans="2:2" x14ac:dyDescent="0.25">
<c r="B26" s="5"/>
</row>
<row r="27" spans="2:2" x14ac:dyDescent="0.25">
<c r="B27" s="5"/>
</row>
<row r="28" spans="2:2" x14ac:dyDescent="0.25">
<c r="B28" s="5"/>
</row>
<row r="29" spans="2:2" x14ac:dyDescent="0.25">
<c r="B29" s="5"/>
</row>
<row r="30" spans="2:2" x14ac:dyDescent="0.25">
<c r="B30" s="5"/>
</row>
<row r="31" spans="2:2" x14ac:dyDescent="0.25">
<c r="B31" s="5"/>
</row>
<row r="32" spans="2:2" x14ac:dyDescent="0.25">
<c r="B32" s="5"/>
</row>
<row r="33" spans="2:2" x14ac:dyDescent="0.25">
<c r="B33" s="5"/>
</row>
<row r="34" spans="2:2" x14ac:dyDescent="0.25">
<c r="B34" s="5"/>
</row>
<row r="35" spans="2:2" x14ac:dyDescent="0.25">
<c r="B35" s="5"/>
</row>
<row r="36" spans="2:2" x14ac:dyDescent="0.25">
<c r="B36" s="5"/>
</row>
<row r="37" spans="2:2" x14ac:dyDescent="0.25">
<c r="B37" s="5"/>
</row>
<row r="38" spans="2:2" x14ac:dyDescent="0.25">
<c r="B38" s="5"/>
</row>
<row r="39" spans="2:2" x14ac:dyDescent="0.25">
<c r="B39" s="5"/>
</row>
<row r="40" spans="2:2" x14ac:dyDescent="0.25">
<c r="B40" s="5"/>
</row>
<row r="41" spans="2:2" x14ac:dyDescent="0.25">
<c r="B41" s="5"/>
</row>
<row r="42" spans="2:2" x14ac:dyDescent="0.25">
<c r="B42" s="4"/>
</row>
<row r="43" spans="2:2" x14ac:dyDescent="0.25">
<c r="B43" s="4"/>
</row>
<row r="44" spans="2:2" x14ac:dyDescent="0.25">
<c r="B44" s="4"/>
</row>
<row r="45" spans="2:2" x14ac:dyDescent="0.25">
<c r="B45" s="4"/>
</row>
<row r="46" spans="2:2" x14ac:dyDescent="0.25">
<c r="B46" s="4"/>
</row>
<row r="47" spans="2:2" x14ac:dyDescent="0.25">
<c r="B47" s="4"/>
</row>
<row r="48" spans="2:2" x14ac:dyDescent="0.25">
<c r="B48" s="4"/>
</row>
<row r="49" spans="2:2" x14ac:dyDescent="0.25">
<c r="B49" s="4"/>
</row>
<row r="50" spans="2:2" x14ac:dyDescent="0.25">
<c r="B50" s="4"/>
</row>
<row r="51" spans="2:2" x14ac:dyDescent="0.25">
<c r="B51" s="4"/>
</row>
<row r="52" spans="2:2" x14ac:dyDescent="0.25">
<c r="B52" s="4"/>
</row>
<row r="53" spans="2:2" x14ac:dyDescent="0.25">
<c r="B53" s="4"/>
</row>
<row r="54" spans="2:2" x14ac:dyDescent="0.25">
<c r="B54" s="4"/>
</row>
<row r="55" spans="2:2" x14ac:dyDescent="0.25">
<c r="B55" s="4"/>
</row>
<row r="56" spans="2:2" x14ac:dyDescent="0.25">
<c r="B56" s="4"/>
</row>
<row r="57" spans="2:2" x14ac:dyDescent="0.25">
<c r="B57" s="4"/>
</row>
<row r="58" spans="2:2" x14ac:dyDescent="0.25">
<c r="B58" s="4"/>
</row>
<row r="59" spans="2:2" x14ac:dyDescent="0.25">
<c r="B59" s="4"/>
</row>
<row r="60" spans="2:2" x14ac:dyDescent="0.25">
<c r="B60" s="4"/>
</row>
<row r="61" spans="2:2" x14ac:dyDescent="0.25">
<c r="B61" s="4"/>
</row>
<row r="62" spans="2:2" x14ac:dyDescent="0.25">
<c r="B62" s="4"/>
</row>
<row r="63" spans="2:2" x14ac:dyDescent="0.25">
<c r="B63" s="4"/>
</row>
<row r="64" spans="2:2" x14ac:dyDescent="0.25">
<c r="B64" s="4"/>
</row>
<row r="65" spans="2:2" x14ac:dyDescent="0.25">
<c r="B65" s="4"/>
</row>
<row r="66" spans="2:2" x14ac:dyDescent="0.25">
<c r="B66" s="4"/>
</row>
<row r="67" spans="2:2" x14ac:dyDescent="0.25">
<c r="B67" s="4"/>
</row>
<row r="68" spans="2:2" x14ac:dyDescent="0.25">
<c r="B68" s="4"/>
</row>
<row r="69" spans="2:2" x14ac:dyDescent="0.25">
<c r="B69" s="4"/>
</row>
<row r="70" spans="2:2" x14ac:dyDescent="0.25">
<c r="B70" s="4"/>
</row>
<row r="71" spans="2:2" x14ac:dyDescent="0.25">
<c r="B71" s="4"/>
</row>
<row r="72" spans="2:2" x14ac:dyDescent="0.25">
<c r="B72" s="4"/>
</row>
<row r="73" spans="2:2" x14ac:dyDescent="0.25">
<c r="B73" s="4"/>
</row>
<row r="74" spans="2:2" x14ac:dyDescent="0.25">
<c r="B74" s="4"/>
</row>
<row r="75" spans="2:2" x14ac:dyDescent="0.25">
<c r="B75" s="4"/>
</row>
<row r="76" spans="2:2" x14ac:dyDescent="0.25">
<c r="B76" s="4"/>
</row>
<row r="77" spans="2:2" x14ac:dyDescent="0.25">
<c r="B77" s="4"/>
</row>
<row r="78" spans="2:2" x14ac:dyDescent="0.25">
<c r="B78" s="4"/>
</row>
<row r="79" spans="2:2" x14ac:dyDescent="0.25">
<c r="B79" s="4"/>
</row>
<row r="80" spans="2:2" x14ac:dyDescent="0.25">
<c r="B80" s="4"/>
</row>
<row r="81" spans="2:2" x14ac:dyDescent="0.25">
<c r="B81" s="4"/>
</row>
<row r="82" spans="2:2" x14ac:dyDescent="0.25">
<c r="B82" s="4"/>
</row>
<row r="83" spans="2:2" x14ac:dyDescent="0.25">
<c r="B83" s="4"/>
</row>
<row r="84" spans="2:2" x14ac:dyDescent="0.25">
<c r="B84" s="4"/>
</row>
<row r="85" spans="2:2" x14ac:dyDescent="0.25">
<c r="B85" s="4"/>
</row>
<row r="86" spans="2:2" x14ac:dyDescent="0.25">
<c r="B86" s="4"/>
</row>
<row r="87" spans="2:2" x14ac:dyDescent="0.25">
<c r="B87" s="4"/>
</row>
<row r="88" spans="2:2" x14ac:dyDescent="0.25">
<c r="B88" s="4"/>
</row>
<row r="89" spans="2:2" x14ac:dyDescent="0.25">
<c r="B89" s="4"/>
</row>
<row r="90" spans="2:2" x14ac:dyDescent="0.25">
<c r="B90" s="4"/>
</row>
<row r="91" spans="2:2" x14ac:dyDescent="0.25">
<c r="B91" s="4"/>
</row>
<row r="92" spans="2:2" x14ac:dyDescent="0.25">
<c r="B92" s="4"/>
</row>
<row r="93" spans="2:2" x14ac:dyDescent="0.25">
<c r="B93" s="4"/>
</row>
<row r="94" spans="2:2" x14ac:dyDescent="0.25">
<c r="B94" s="4"/>
</row>
<row r="95" spans="2:2" x14ac:dyDescent="0.25">
<c r="B95" s="4"/>
</row>
<row r="96" spans="2:2" x14ac:dyDescent="0.25">
<c r="B96" s="4"/>
</row>
<row r="97" spans="2:2" x14ac:dyDescent="0.25">
<c r="B97" s="4"/>
</row>
<row r="98" spans="2:2" x14ac:dyDescent="0.25">
<c r="B98" s="4"/>
</row>
<row r="99" spans="2:2" x14ac:dyDescent="0.25">
<c r="B99" s="4"/>
</row>
<row r="100" spans="2:2" x14ac:dyDescent="0.25">
<c r="B100" s="4"/>
</row>
<row r="101" spans="2:2" x14ac:dyDescent="0.25">
<c r="B101" s="4"/>
</row>
<row r="102" spans="2:2" x14ac:dyDescent="0.25">
<c r="B102" s="4"/>
</row>
<row r="103" spans="2:2" x14ac:dyDescent="0.25">
<c r="B103" s="4"/>
</row>
<row r="104" spans="2:2" x14ac:dyDescent="0.25">
<c r="B104" s="4"/>
</row>
<row r="105" spans="2:2" x14ac:dyDescent="0.25">
<c r="B105" s="4"/>
</row>
<row r="106" spans="2:2" x14ac:dyDescent="0.25">
<c r="B106" s="4"/>
</row>
<row r="107" spans="2:2" x14ac:dyDescent="0.25">
<c r="B107" s="4"/>
</row>
</sheetData>
<autoFilter ref="A2:P2"/>
<phoneticPr fontId="1" type="noConversion"/>
<pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/>
<pageSetup paperSize="9" orientation="portrait" r:id="rId1"/>
</worksheet>
编辑
输出应该是这样的。我的 sharedStrings 出现在下方但没有出现在上方。
为什么上面没有显示sharedStrings.xml?
File merged with OpenTBS (XML reformated for debuging only): xl/sharedStrings.xml
------------------------------
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="32" uniqueCount="32">
<si>
<t>
[p.ProjectName]
</t>
</si>
<si>
<t>
ID
</t>
</si>
<si>
<t>
ActionItemID
</t>
</si>
<si>
<t>
Action Item Title
</t>
</si>
<si>
<t>
Assigned Date
</t>
</si>
<si>
<t>
Due Date
</t>
</si>
<si>
<t>
ECD
</t>
</si>
<si>
<t>
Completion Date
</t>
</si>
<si>
<t>
Closed Date
</t>
</si>
<si>
<t>
Owner
</t>
</si>
<si>
<t>
Criticality
</t>
</si>
<si>
<t>
Assignor
</t>
</si>
<si>
<t>
Alt Owner
</t>
</si>
<si>
<t>
[b.Category1Name]
</t>
</si>
<si>
<t>
[b.Category2Name]
</t>
</si>
<si>
<t>
[b.Category3Name]
</t>
</si>
<si>
<t>
[b.Category4Name]
</t>
</si>
<si>
<t>
[a.ActionItemID;block=tbs:row]
</t>
</si>
<si>
<t>
[a.ActionItemTitle]
</t>
</si>
<si>
<t>
[a.AssignedDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.DueDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.ECD;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.CompletionDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.ClosedDate;ope=tbs:date]
</t>
</si>
<si>
<t>
[a.Owner]
</t>
</si>
<si>
<t>
[a.Criticality]
</t>
</si>
<si>
<t>
[a.Assignor]
</t>
</si>
<si>
<t>
[a.AltOwner]
</t>
</si>
<si>
<t>
[a.Category1]
</t>
</si>
<si>
<t>
[a.Category2]
</t>
</si>
<si>
<t>
[a.Category3]
</t>
</si>
<si>
<t>
[a.Category4]
</t>
</si>
</sst>
尝试最新版本后,我能够使 Excel 脚本运行。从 1.9.5 升级到 1.9.6 是解决方案。