我最近导入了许多大型excel 2010电子表格(导入CSV以进行导入)到数据库中。我现在被告知单元格注释丢失了(我甚至不知道原始Excel文件中有单元格注释,我只有CSV)。
我需要搜索Excel文件的每一行,找到带有单元格注释的单元格,抓取注释并将其添加到该行的数据库中(数据库引用电子表格中的行号,所以如果我可以提取行数字和该行中的所有单元格注释,这是完美的)
我的技能是PHP和Perl。理想情况下,我会使用PHP来读取和处理数据,但是使用其他东西来输出text / csv,我可以用PHP解析它也可以正常工作。
有没有人知道提取这些单元格注释的方法,还是有任何指针?
谢谢!
答案 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()
不确定你是否需要知道这一点,但我只是想加入它。