0

我最近将一些大型 excel 2010 电子表格(已导出为 CSV 用于导入)导入数据库。我现在被告知缺少单元格注释(我什至不知道原始 Excel 文件中有单元格注释,我只有 CSV)。

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

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

有谁知道提取这些单元格注释的方法,或者有任何指针?

谢谢!

4

2 回答 2

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 文件,但该方法同样可以轻松地将 $inputFileType 替换为 .xlsx 文件的“Excel2007”

于 2012-08-08T16:25:25.110 回答
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()

不知道你是否需要知道这一点,但我只是想我会把它加进去。

于 2012-08-08T20:49:22.553 回答