如何以编程方式检索excel中的单元格注释?

时间:2012-08-08 16:09:22

标签: php excel export

我最近导入了许多大型excel 2010电子表格(导​​入CSV以进行导入)到数据库中。我现在被告知单元格注释丢失了(我甚至不知道原始Excel文件中有单元格注释,我只有CSV)。

我需要搜索Excel文件的每一行,找到带有单元格注释的单元格,抓取注释并将其添加到该行的数据库中(数据库引用电子表格中的行号,所以如果我可以提取行数字和该行中的所有单元格注释,这是完美的)

我的技能是PHP和Perl。理想情况下,我会使用PHP来读取和处理数据,但是使用其他东西来输出text / csv,我可以用PHP解析它也可以正常工作。

有没有人知道提取这些单元格注释的方法,还是有任何指针?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用PHPExcel库。对工作表进行评论。并且工作表的getComments()方法将返回由其单元格地址索引的注释对象数组。

修改

include '/PHPExcel_Library/Classes/PHPExcel.php';

$inputFileType = 'Excel5';
$inputFileName = 'CS2template_all_products_v12.xls';

$objPHPExcelReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objPHPExcelReader->load($inputFileName);

$sheet = $objPHPExcel->getActiveSheet();

$comments = $sheet->getComments();
foreach($comments  as $cellID => $comment) {
    echo $cellID,PHP_EOL;
    var_dump($comment->getText()->getPlainText());
}

注意,我的示例使用Excel .xls文件,但该方法可以像使用“Excel2007”替换$ inputFileType一样轻松替换.xlsx文件

答案 1 :(得分:0)

我不能相信这一点。我从这个网站得到了: http://chandoo.org/wp/2009/09/03/get-cell-comments/

只需在VBA中插入模块,然后将其复制并粘贴到:

Function getComment(incell) As String
 ' accepts a cell as input and returns its comments (if any) back as a string
 On Error Resume Next
 getComment = incell.Comment.Text
End Function

只需将其放入单元格中,使用注释引用单元格并自动填充您的内容。例如:

=getComment(C42)

如果您需要行的行号,您可以这样做:

=row()

不确定你是否需要知道这一点,但我只是想加入它。