-1

我有一个 excel 文件,其中有大约数百封电子邮件在第一列..

就像这样,

Ameerali Uncle. <seenameer@gmail.com>
Afkaar (Habeeb). <afkar.mam@gmail.com>
Ameerali Uncle. <seenameer@gmail.com>

我想把它从 <> 符号中取出并将其放入一个新列中,并在第一列中留下名称。所以这样做之后,它会像

column 1         column 2
Afkaar (Habeeb)  afkar.mam@gmail.com

这可能与php有关吗?有人可以建议我一个很好的机制来做到这一点。

谢谢

编辑 1

我的示例 excel 文件如下所示。

在此处输入图像描述

4

1 回答 1

3

您可以使用 PHPExcel 库来读取/写入 Excel 文件。(下载和文档可在http://phpexcel.codeplex.com/获得)。然后使用 RegEx 分隔字符串。

编辑 1

代码将是这样的:

//  Include PHPExcel_IOFactory
include 'PHPExcel/IOFactory.php';

$inputFileName = './example1.xlsx';
$outputFileName = './output.xlsx';

//  Read your Excel workbook
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);

    $outputObj = new PHPExcel();
} catch(Exception $e) {
    die('Error loading file: '. $e->getMessage());
}

//  Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();

$outputObj->setActiveSheetIndex(0);
$outSheet = $outputObj->getActiveSheet();

//  Loop through each row of the worksheet in turn
for ($row = 2; $row <= $highestRow; $row++){ // As row 1 seems to be header
    //  Read cell A2, A3, etc.
    $line = $sheet->getCell('A' . $row)->getValue();
    preg_match("|([^\.]+)\. <([^>]+)>|", $line, $data);
    // $data[1] will be name & $data[2] will be email
    $outSheet->setCellValue('A' . $row, $data[1]);
    $outSheet->setCellValue('B' . $row, $data[2]);
}

// write new data into a .xlsx file
$objWriter = new PHPExcel_Writer_Excel2007($outputObj);
$objWriter->save($outputFileName);

资料来源:Stackoverflow 问题PHPExcel 示例

于 2013-10-13T09:47:41.803 回答