搜尋
首頁php教程php手册[原创]php批量替换Excel文件内容

[原创]php批量替换Excel文件内容

Jun 06, 2016 pm 08:09 PM
excelphp內容原創大量文件替換

手里有一大批Excel文件,不过里面有几行数据是不对的,需要替换,本来想着用VC写个程序来替换,但太麻烦也为了考验一下PHP的强大之处,就改用了PHP编写,首先想到的是用PHPExcel,不过查了查官方的guide,PHPExcel是不支持替换的,只支持读和写,也就是说在

手里有一大批Excel文件,不过里面有几行数据是不对的,需要替换,本来想着用VC写个程序来替换,但太麻烦也为了考验一下PHP的强大之处,就改用了PHP编写,首先想到的是用PHPExcel,不过查了查官方的guide,PHPExcel是不支持替换的,只支持读和写,也就是说在遍历的过程中需要把每个单元格所有的样式全部获取出来然后再往新的excel里面写,这无疑是绕了一个大圈子,而且有合并单元格的会更麻烦。所以就查了查MSDN,决定用COM接口来实现。废话不说,把关键代码贴出来:

$excelPath = "e:\\excel";
$total = $success = $jump = 0;
$objExcel = new COM("excel.application") or die("不能打开Excel应用程序");
$handle = opendir($excelPath); //打开当前目录
readdir($handle); //排除"."
readdir($handle); //排除 ".."
//循环读取文件
while ($file = readdir($handle)) {
	$total++;
	//生成源文件名
	$fileName = $excelPath . DIRECTORY_SEPARATOR .$file;
	$pathinfo = pathinfo($fileName);
	if(strtolower($pathinfo['extension']) != 'xls'){
		echo "已跳过:".$file.",文件格式不对";
		$jump++;
		continue;
	}
	echo "正在替换文件:".$file."\n";
	if(file_exists($fileName)){
		if(!$objExcel->Application->WorkBooks->Open($fileName)){
			echo $file."打开失败,跳过!";
			$jump++;
			continue;
		}
	}
	else{
		echo $fileName."文件不存在\n";
		$jump++;
		continue;
	}
	$totalRow = $objExcel->ActiveSheet->UsedRange->Rows->Count;
	for($i=1;$iWorksheets(1)->Range("A".$i)->Value);//获取到值
		if(in_array($keyword,$replaceIn)){//判断后在这里进行替换
			$objExcel->Worksheets(1)->Range("B".$i)->Value = $replaceRule[$keyword];
			$objExcel->Worksheets(1)->Range("B".$i)->Font->Name = "黑体";
			$objExcel->Worksheets(1)->Range("B".$i)->Font->Size = 12;
		}
	}
	if(!$objExcel->ActiveWorkBook->Saved)
	{
		$objExcel->ActiveWorkBook->save();
		echo $file."保存成功!\n";
		$success++;
	}
	//关闭工作簿
	$objExcel->Quit();
}
echo "\n全部替换完成!共{$total}个,成功{$success}个,跳过{$jump}个!\n";
//清空对象
$objExcel = null;
exit;

需要注意的是,尽量把这个程序放在命令行下跑,别放在IIS或APACHE下面,因为是调用的系统组件COM,所以可能会出现各种奇葩的错误,这些错误的原因都是因为权限不足引起的,所以直接用管理员身份运行命令行,在命令行下跑就能把权限问题排除在外!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。