検索
ホームページ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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません