【问题标题】:import excel file with subscript character导入带下标字符的excel文件
【发布时间】:2013-01-28 15:32:59
【问题描述】:

上传 Excel 文件没问题

浏览了很多关于uloading excel to mysql的文章 试过了

http://phpexcel.codeplex.com/

http://sourceforge.net/projects/phpexcelreader/

https://stackoverflow.com/a/7889220/1026905(非常好的编码类)

我的问题是我无法上传在 excel 文件中看到的字符

上标部分正在转换

中的示例

∴ tn = n² + 2n + 1 + 2

n² ...按原样转换
∴ .... 原样转换

像 ∠Ωπ √ ∞ ≅⊥∫∪∴≈≡⊆μ 这样的所有字符我都可以按原样转换

唯一的问题是 tn, t1, t2, t3 我无法获得 n,1,2,3 作为下标(此处无法显示,但您可以在图片中查看

 tn ... should be t<sub>n</sub>

... in html format n should be subscript 

我没有得到它,因为它是

【问题讨论】:

  • 上标字符可能是富文本,使用上标;所以请使用您图书馆的富文本处理功能来阅读它
  • 亲爱的 Mark 请指导我如何使用“使用您图书馆的富文本处理功能来阅读它”

标签: php mysql excel subscript


【解决方案1】:

使用 PHPExcel,您可以识别单元格是否包含富文本,因为 getValue() 调用将返回 PHPExcel_RichText 对象而不是字符串/整数/浮点数/布尔标量类型。

然后,您可以遍历 PHPExcel_RichText_Run 对象的集合,以查看与其关联的样式:

$cellValueAsString = '';
$elements = $cell->getValue()->getRichTextElements();
foreach ($elements as $element) {
    // Rich text start?
    if ($element instanceof PHPExcel_RichText_Run) {
        if ($element->getFont()->getSuperScript()) {
            $cellValueAsString .= '<sup>';
        } else if ($element->getFont()->getSubScript()) {
            $cellValueAsString .= '<sub>';
        }
    }
    // Convert UTF8 data to PCDATA
    $cellText = $element->getText();
    $cellValueAsString .= htmlspecialchars($cellText);
    if ($element instanceof PHPExcel_RichText_Run) {
        if ($element->getFont()->getSuperScript()) {
            $cellValueAsString .= '</sup>';
        } else if ($element->getFont()->getSubScript()) {
            $cellValueAsString .= '</sub>';
        }
    }
}

将是将富文本单元格内容转换为显示上标和下标字符的简单 HTML 标记的简单代码块

【讨论】:

  • 谢谢 $cell = $worksheet->getCellByColumnAndRow($col, $row); $val = $cell->getValue();是我得到的单元格值我试过 $elements = $cell->getValue()->getRichTextElements(); foreach ($elements as $element) { // 富文本开始?但是在第 27 行对 D:\EasyPHP-5.3.8.0\www\maratheclasses\PHPexcel_178\php178reader.php 中的非对象调用成员函数 getRichTextElements() 时出现错误
  • 需要检查$val返回的值是否= $cell->getValue(); call 是一个富文本对象,然后以这种方式解析它;如果您只是返回一个正常的标量(例如单元格值是一个简单的数字),那么如果您尝试将其解析为富文本,则会出现此错误
  • 我已经包含了 PHPExcel/cell/DataType.php 并尝试了命令 echo "
    find data type :".dataTypeForValue($val);但是收到错误调用未定义函数 dataTypeForValue() in... 谦虚的请求请指导要包含哪个类以及从 $val = $cell->getValue();
    返回的值
  • 我在目录 Documentation/Examples/ 中尝试了示例,看来我没有得到正确的方法 .. 在此先感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-27
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2011-10-21
  • 2014-11-19
相关资源
最近更新 更多