中小企業の働き方改革をサポート>>

閲覧ありがとうございます。
さっそく質問なのですが、私は現在PHPExcelを使用しています。
このクラスを利用してExcelのファイル形式に出力することはできるようになりました。
しかし、シートを1枚しか使う事ができません。
2枚目、3枚目と、シートを作る方法を教えて頂きたいです。
使用環境はxamppです。
よろしくお願いします!

このQ&Aに関連する最新のQ&A

A 回答 (2件)

今日まで、実際にPHPExcelを使ったことがないのでアレなんですが、


http://journal.mycom.co.jp/articles/2009/03/06/p …
こちら(マイコミジャーナル)の記事を見る限りでは、
PHPExcelをnewした時点で一枚目のシートは自動的に生成されるようです。
(実際にスクリプトコピペして試してみたところ正しく動作しました)

なので、
<?php
$xl = new PHPExcel();
$xl->setActiveSheetIndex(0);

$sheet1 = $xl->getActiveSheet(); //$sheet1には一枚目のシートのインスタンスを代入

$xl->createSheet();
$xl->setActiveSheetIndex(1);

$sheet2 = $xl->getActiveSheet(); //$sheet2に二枚目のシートのインスタンスを代入

?>
と別々の変数にそれぞれのシートのインスタンスを代入してやれば、それぞれ操作することが出来ると思います。
    • good
    • 0
この回答へのお礼

再回答ありがとうございます!
2枚のシートを同時に使えるようになりました。
本当にありがとうございました。

お礼日時:2009/09/13 23:15

createSheetメソッドというものがありますので、ソレを利用するようです。



<?php
$xl = new PHPExcel(); //インスタンス作成して
$xl->createSheet(); //新しいシート作成して
$xl->setActiveSheetIndex(1); //二個目のシートをアクティブにして
$sheet = $xl->getActiveSheet(); //アクティブなシートのインスタンスを取得して

$sheet->setCellValue('A1', 'aaaaaaa'); //適当に値とか挿入すると
?>
こんな感じですか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
続けて質問なんですが…
一枚目のシートを作る時も$xlを使用して
$xl= new PHPExcel();
$xl->createSheet();
$xl->setActiveSheetIndex(0);
$sheet=$xl->getActiveSheet();
$sheet->setCellValue('A1','test');
のように記述した後に、またインスタンスを作成して使用すればいいのでしょうか?
一枚目を使ったあと、二枚目に切り替え、作業する、その一連の動作がうまくできません。
よろしくお願いします!

お礼日時:2009/09/13 22:27

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qillegal string offset

php5.3では動いていたプログラムをphp 5.4 で動かしたらwarning illegal string offsetが出て困っています。以下のプログラムでwarningが出ないようにするにはどのようにコーディングすればよいのでしょうか?


$a = array('exists' => 'foo');
if ($a['exists']['non_existent']) {
print 1;
}
print 2;
exit;

Aベストアンサー

isset()を使えばいいと思います

Q文字列から、特定の文字を削除したい

アンケートで入力された値を受け取り、メールで送信しているのですが、受け取った値から、特定の文字列を削除することは可能でしょうか?

例えば電話番号の入力の場合、
03-xxxx-xxxx →03xxxxxxxx
077-xxx-xxxx →077xxxxxxx
のように、-(ハイフン)が入力されていたら、-を削除した文字列に置換してメール送信したいのです。
入力する時に、3つのテキストエリアに分けるのは諸事情でできないので、特定の文字を削除する関数か処理方法がありましたら、教えていただきたいです。
よろしくお願いします。

Aベストアンサー

str_replace
http://itbtech.itboost.co.jp/man/php_man/function.str-replace.html

<?php
$orig_telno = "03-xxxx-xxxx";

$telno = str_replace("-", "", $orig_telno);
echo $telno;

03xxxxxxxx

“PHP 文字列” あたりをキーワードに検索すれば
そんなに難しいものでもないような。

QJavaScriptde途中で、「exit」するには?

function kensaku(){
s_data = document.kaiin_form.input_name.value;

if(!s_data){ alert("キーワードを入れて下さい!"); }

if(s_data != dumy){ ...... }
for(i=st_no;i<=n;i++){
......省略.................;
.......省略................}
}

----------------------------------
3行目で表示されたアラートをOKで閉じても、4行目以下が実行されてしまいます。
3行目でexitするにはどうすれば良いでしょうか?

Aベストアンサー

>関数(kensaku())からは抜けられませんでした。
そうですね、勘違いしていました、f(^^;
すみません。
if(!s_data){
alert("キーワードを入れて下さい!");
return;
}
ですね。

Qsyntax error, unexpected '}' というエラーの対処法

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" maxlength="3" />
<input type="sbumit" value=回答" />
</form>
<hr />
<?php
session_start();
if(is_null($_SESSION['answer'])){
mt_stand(microtime()*1000000);
$_SESSION['answer']=mt_rand(1,100);
$_SESSION['game_cnt']=0;
}
if($_POST['answer']!=""){
$_SESSION['game_cnt']++;
if($_session['answer']==$_POST['answer']){
print("おめでとうございます".
$_SESSION['game_cnt']."回で正解しました!");
session_destroy();
}else{
if($_SESSION['answer']>$_POST['answer']){
print("もう少し大きいです。");
}else
print("もう少し小さいです。");
}
}
}
?>
</body>
</html>
それとこの間違えたところをなおしたあとはいつもコンピュータを再起動しないと修正したところが適用されないのですがほかに方法はないですか?基本的な質問ですいません。

PHPを習い始めて三日目になるのですがParse error: syntax error, unexpected '}' in C:\Program Files\Apache Group\Apache2\htdocs\****\****\game.php on line 33
というエラーがでるのですが33行目前後のどこをなおせばいいのでしょうか?
・game.php
<html>
<head>
<title>数当てゲーム</title>
</head>
<body>
<h1 style="background:#cccccc">数当てゲーム</h1>
<form method="POST" action="game.php">
1~100までの数を入力してください
<input type="text" name="answer" size="5" max...続きを読む

Aベストアンサー

print("もう少し大きいです。");
}else
print("もう少し小さいです。");
のelseの後に{がないようですが、大丈夫でしょうか?

QHTMLフォームのSELECTの幅を一定にするためには?

HTMLフォームのSELECTの幅を一定にするためにはどのようにすれば
いいのでしょうか?

CSS等で設定できるとありがたいのですが、やり方がわかりません。

Aベストアンサー

<select style="width: 200px">

QPHPExcelで日本語(漢字)ファイルが読めない

ひらがな、カタカナは読み込めるのですが、漢字で下記のエラーが出ます。
mb_convert_encodingでいろいろ変換してみましたがダメです。
教えてください!

Fatal error: Uncaught exception 'Exception' with message 'Could not open 予?xls for reading! File does not exist, or it is not readable.' in C:\xampp\htdocs\Partner_Management\PHPExcel\Shared\OLERead.php:76 Stack trace: #0 C:\xampp\htdocs\Partner_Management\PHPExcel\Reader\Excel5.php(928): PHPExcel_Shared_OLERead->read('??????xls') #1 C:\xampp\htdocs\Partner_Management\PHPExcel\Reader\Excel5.php(498): PHPExcel_Reader_Excel5->_loadOLE('??????xls') #2 C:\xampp\htdocs\Partner_Management\EstimateCost.php(54): PHPExcel_Reader_Excel5->load('??????xls') #3 {main} thrown in C:\xampp\htdocs\Partner_Management\PHPExcel\Shared\OLERead.php on line 76

ファイル名:予定.xls

OS:WindowsXP
Excel:Excel5
XAMPP:1.7.3

[php.ini]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
mbstring.script_encoding= Shift_JIS

[phpファイルの文字コード]
UTF-8

ひらがな、カタカナは読み込めるのですが、漢字で下記のエラーが出ます。
mb_convert_encodingでいろいろ変換してみましたがダメです。
教えてください!

Fatal error: Uncaught exception 'Exception' with message 'Could not open 予?xls for reading! File does not exist, or it is not readable.' in C:\xampp\htdocs\Partner_Management\PHPExcel\Shared\OLERead.php:76 Stack trace: #0 C:\xampp\htdocs\Partner_Management\PHPExcel\Reader\Excel5.php(928): PHPExcel_Shared_OLERead->read('??????xls'...続きを読む

Aベストアンサー

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
mbstring.script_encoding= Shift_JIS

すみません、これらをよくみると、
mbstring.http_output = SJIS
ってなっているということは、画面が遷移して、ページがレンダリングされるたびに、
すべての出力がSJISになります。
にもかかわらず、
mbstring.http_input = pass
となっているので、POSTされて受け取った値はすべてSJISで渡されてきてしまうと思います。

これは、両方共「pass」にしたほうが良いです。
また、mbstring.script_encodingにかんしても、ドキュメントがなかったりして何をやっているかよくわからないので
出来ればコメントアウトしてしまうのが無難かなと。
※私の場合は、mbstring関連の項目はすべてデフォルトのままです(つまり全部コメントアウト)。
基本的に自分の書いているスクリプトで各エンコーディングを行ったほうが、別の環境で実行した場合でも問題が起こりづらい。



それらを設定した上、一度XAMPPを再起動させてみて、現象が発生するか確認されたほうが良いと思います。

HTMLがSJISで記述されているなら、echoする出力全てに、mb_convert_encodingしないといけないですが。

まぁ、逆に言えば今の設定のままでも、読み込むファイル名がPOSTされた値なのであれば、mb_convert_encodingをしなければ読めそうな気がします。

mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = pass
mbstring.http_output = SJIS
mbstring.encoding_translation = Off
mbstring.detect_order = SJIS,EUC-JP,JIS,UTF-8,ASCII
mbstring.substitute_character = none;
mbstring.script_encoding= Shift_JIS

すみません、これらをよくみると、
mbstring.http_output = SJIS
ってなっているということは、画面が遷移して、ページがレンダリングされるたびに、
すべての出力がSJISになります。
にもかかわらず、
mbstrin...続きを読む

Qテーブルの最後(最新)のレコードを抽出したい

宜しくお願いします。
PHP MYSQL の組み合わせで使っています

以下のようにして、最後のレコードを取り出したいのですが
まったく違う事をしているのかもしれません。

$sql =" select * from テーブル where フィールド='max' " ;

フィールドはauto_incrementで番号を振っています。
これで最大のつもりなのですが・・・。

他にも、レコードを入れた時間も記録したフィールドがあるのですが
どうしてよいか?判りません。

テーブルの最新のレコードを出したいのです。
**その中の一つのフィールドを取り出すのですが、
  それはうまくいっているみたいです 
  (max の所に数字を入れると表示します)

お手数かけますが、どなたかご教授お願いいたします。

Aベストアンサー

#2回答者です。

MySQL 4.1以前(サブクエリを使えない)なら、以下のような方法が考えられます。

select * from 表名
order by 列名 desc limit 1

Q宜しくお願いします。

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから--->

$min = h($r -> x);
$max = h($s -> y);
for($i=$min ; $i<= $max; $i++){
$search = sprintf("SELECT id FROM Sheet WHERE no='%d'",$i);
$q_search = mysql_query($search);
$result = mysql_fetch_object($q_search);
echo $result;
}

宜しくお願いします。
mix~max値の間、発行したクエリーからの値を配列に入れたいのですが、どうもFor文中にmin,max値は届いているのですが,$resultに値が入りません。
エラーからしてSQLで行っている変数処理に$iの値が届いてない感じがするのですが、下記のソースを見て頂いて、疑わしき点などご指摘、ご教授いただけませんでしょうか。

どうぞ宜しくお願いします。


--エラー文ここから--->
Catchable fatal error: Object of class stdClass could not be converted to string in ...




--ソースここから...続きを読む

Aベストアンサー

PHPあまり詳しくないので間違っていたらすいません。


>$result = mysql_fetch_object($q_search);
でresultはobject型で代入しておりそれを表示するときにString型に変換できていないのが原因かとおもわれます。

参考URL
mysql-query
http://php.net/manual/ja/function.mysql-query.php

mysql-fetch-array
http://php.net/manual/ja/function.mysql-fetch-array.php

mysql_fetch_object
http://phpspot.net/php/man/php/function.mysql-fetch-object.html

QInner join と Left joinの明確な違いは?

Inner join と Left joinの違いがよくわかりません。
教えてください。

Aベストアンサー

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
4               NULL
5               NULL
6               NULL
の6レコードが出力されますが、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 INNER JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3               3
の3レコードしか出力されません。

出てくる結果が違います。

テーブル1のフィールド1に、






が、

テーブル2のフィールド1に、






が入力されている場合、

SELECT [テーブル1].[フィールド1], [テーブル2].[フィールド1]
FROM テーブル1 LEFT JOIN テーブル2 ON [テーブル1].[フィールド1]=[テーブル2].[フィールド1];
では、結果は、
テーブル1.フィールド1 テーブル2.フィールド1
1               1
2               2
3           ...続きを読む

Qテーブル作成でエラーが出てきます。

こんにちは。
いつもお世話になっております。

テーブルを作っていたのですが、
ERROR 1060: Duplicate column name
というエラーが帰ってきてしまいます。

予約語とかぶっているフィールド名でもないし、
何が悪いのかわからなくって・・・。

どうかご指導よろしくお願いいたします。

Aベストアンサー

実際にエラーが出た create 構文を示していただければ指摘できると思います。


人気Q&Aランキング

おすすめ情報