使用此代码,我可以在Excel文件中创建注释。
$comment = $data_sheet->getCommentByColumnAndRow($col, 1);
$comment->setAuthor($table_name . '.' . $field_name);
$comment->setWidth('200px');
$comment->setHeight('24px');
$comment->setVisible(false); # ActiveCell.Comment.Visible = True
$objCommentRichText = $comment->getText()->createTextRun($table_name . '.' . $field_name);
保存时文件中包含注释,并且可以在重新打开此文件时进行编辑,注释对象处于默认状态。
$comment = $data_sheet->getComment('A1');
结果是: -
$comment = PHPExcel_Comment Object (
[_author:private] => Author
[_text:private] => PHPExcel_RichText Object ( [_richTextElements:private] => Array ( ) )
[_width:private] => 96pt
[_marginLeft:private] => 59.25pt
[_marginTop:private] => 1.5pt
[_visible:private] =>
[_height:private] => 55.5pt
[_fillColor:private] => PHPExcel_Style_Color Object (
[_argb:private] => FFFFFFE1
[_isSupervisor:private] =>
[_parent:private] =>
[_parentPropertyName:private] =>
)
)
++编辑:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<comments xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<authors><author>products.products_id</author><author>products.part_code</author><author>products.products_name</author><author>products.products_quantity</author><author>products.products_status</author><author>products.cost</author><author>products.cost_modifier</author><author>products.delivery_cost</author><author>products.shipping_strategy</author><author>products.products_weight</author><author>products.shipping_amount</author><author>products.products_price</author><author>products.rrp</author><author>products.trade</author><author>products_feed.amazon_price</author><author>products_feed.ebay_price</author></authors>
<commentList>
<comment ref="A1" authorId="0"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_id</t></r></text></comment>
<comment ref="B1" authorId="1"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.part_code</t></r></text></comment>
<comment ref="C1" authorId="2"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_name</t></r></text></comment>
<comment ref="D1" authorId="3"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_quantity</t></r></text></comment>
<comment ref="E1" authorId="4"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_status</t></r></text></comment>
<comment ref="F1" authorId="5"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.cost</t></r></text></comment>
<comment ref="G1" authorId="6"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.cost_modifier</t></r></text></comment>
<comment ref="H1" authorId="7"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.delivery_cost</t></r></text></comment>
<comment ref="I1" authorId="8"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.shipping_strategy</t></r></text></comment>
<comment ref="J1" authorId="9"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_weight</t></r></text></comment>
<comment ref="K1" authorId="10"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.shipping_amount</t></r></text></comment>
<comment ref="L1" authorId="11"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.products_price</t></r></text></comment>
<comment ref="M1" authorId="12"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.rrp</t></r></text></comment>
<comment ref="N1" authorId="13"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products.trade</t></r></text></comment>
<comment ref="O1" authorId="14"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products_feed.amazon_price</t></r></text></comment>
<comment ref="P1" authorId="15"><text><r><rPr><sz val="11"/><color rgb="FF000000"/><rFont val="Calibri"/></rPr><t>products_feed.ebay_price</t></r></text></comment>
</commentList>
</comments>
因此评论存在于.xlsx文件中。
然而,这些都没有收到评论。
$comment = $data_sheet->getCommentByColumnAndRow($col, 1);
$comment = $data_sheet->getComment('A'. $row);
$comments = $data_sheet->getComments();
- 编辑 问题是,评论是否以“Excel2007”格式正确加载?
答案 0 :(得分:3)
这是我用来从使用PHPExcel的单元格中提取注释的代码片段
$objPHPExcel = PHPExcel_IOFactory::load("MyExcelFile.xlsx");
$objWorksheet = $objPHPExcel->getActiveSheet();
// loop through each row in excel file
foreach ($objWorksheet->getRowIterator() as $row) {
$cellIterator = $row->getCellIterator();
$cellIterator->setIterateOnlyExistingCells(true);
// loop through each column in row
foreach ($cellIterator as $cell) {
// get the value of the cell
$value = $cell->getValue();
// get the comment in the cell (if a comment exists)
$comment = $objWorksheet->getComment($cell->getCoordinate())->getText();
}
}
的链接
答案 1 :(得分:2)
Excel2007 Reader中的代码肯定存在于加载注释中。我必须进行一些测试以确认它是否正常工作。
修改强>
终于找到了一些时间来测试它。
使用版本1.7.5以及最新的SVN代码,Excel2007 Reader成功读取工作表的所有注释(使用工作表的getComments()方法确定),以及getCommentByColumnAndRow()和getComment()方法返回所请求单元格的注释对象,如果没有已设置,则创建新注释。
这是预期的行为。
我唯一能想到的是你在$ data_sheet
中没有正确的工作表