Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2008-11-28 11:51:08

yama
Administrator
登録日: 2005-07-07
投稿: 1,270
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

excelで作った表組をコピー・ペーストで投稿画面に貼り付けます。これをtableタグに変換します。仕組みは単純で、excelからコピペされたテキストはセルがタブで区切られているので、このタブを<td></td>に変換します。

大雑把なコードなので、改造ベースなどにどうぞ。


Attachments:
zip NP_ExcelPaste01.zip, Size: 980 B, Downloads: 281
png 01.png, Size: 24.68 KiB, Downloads: 733
png 02.png, Size: 27.88 KiB, Downloads: 795

オフライン

#2 2008-12-08 20:21:19

hilbert
メンバー
From: 東日本
登録日: 2008-09-20
投稿: 34

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

いつもお世話になっております。早速使ってみました。

★TinyMCE が入っていない状態では
・ 結合セルがいると、うまく変換されない。(colspan が生成されない)
・ セル内で Alter+Enter による改行が入っていると、やはりうまく変換されない。
  (次の行に Alter+Enter 以降の部分が回り込んでしまう)
・ なので、TinyMCE のプリインストールはほぼ必須

★TinyMCE が入っている状態では
・ うっかり MS-Word から「ワードから貼り付け」ボタンではなく、普通に貼り付けると、大量に文字列が挿入される。
→Firefox だと気づかないことも多いが、IE だと、その部分から後ろの表示が確実におかしくなる。
  (サイドナビまで消えてしまったりする)
・ 表が入っていないワード貼り付けまで変更しようとするので、最初は何が起きたか分からなかった。
→と考えると、むしろ TinyMCE に「エクセルから貼り付け」ボタンが追加される方が嬉しいかも。
  (登録イベントが変わることになるのでしょうね)
・ 2カラムの設定で、なぜか全体の幅(サイドバーを含む)で表が生成されてしまう。
→TinyMCE で編集すれば、簡単に修正できるので、致命的ではない。

ということで、「TinyMCE の改良版として登場すると一番嬉しい」というのが私の結論でした。


Hibert, an amateur Mathematist

オフライン

#3 2008-12-08 21:27:39

yama
Administrator
登録日: 2005-07-07
投稿: 1,270
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

クリップボード経由で取得するExcelデータは単純なタブ区切りデータ(CSVとほとんど同じ)なので、結合セル表現を再現するのは不可能だと思います。貼り付けたあとで少し手を加えてセルを結合するとかなら、wiki記法などを参考にすれば何かいい方法が得られるかも。
セル内の改行は「"」を使って表現するみたいで、これはもしかすると再現可能です。

TinyMCEをインストールしている場合は、このプラグインは実質的に無効になっていると思います。たしか、Word貼り付けボタンでExcelデータも貼り付けられるという解釈でよかったと思いますが、けっこうバグバグなのかな?
http://wiki.moxiecode.com/index.php/Tin ... gins/paste
Word関連で6つのオプションがあるようなので、これを調整すると違う結果が得られると思います。

違う話になりますが、「その部分から後ろの表示が確実におかしくなる」というのは、サニタイズ系のプラグインを利用して保険的に問題を防ぐのもいいかも。

ピンとこない回答ですみませんが、他のCMSでもこのへんのアプローチは難しいところですし、何かヒントがあればと日々探してはいます。(完全な答えは無理だと思いますが)

オフライン

#4 2008-12-08 22:24:37

hilbert
メンバー
From: 東日本
登録日: 2008-09-20
投稿: 34

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

解説有り難うございます。

ちなみに、TinyMCE が入っている状態では、ちゃんと結合セルは変換してくれます。
直感的には信じられなかったのですが。嬉しい驚きでした。また、同様に、TinyMCE が入っている状態では、ちゃんと Alter+Enter によるセル内改行も正しく変換してくれています。ソースを見ると、その部分で <br /> が挿入されていました。自分の設定では、改行を <br /> タグに変換しないようにしているので、これも良い意味で驚きでした。

一方、解説を拝見していると、TinyMCE の併用はあまり想定しておられなかったようにお見受けしますが、そうだったのしょうか?
自分は、結合セルが不規則に存在している複雑なシートをいきなり貼り付けたので、挙動を見て TinyMCE 必須、と思いこんでしまったのでしたが(仕事場には、TinyMCE の入っているものと入っていないものが両方存在しています。一部プラグインが異なる以外は設定は同一です)。

また、
> うっかり MS-Word から「ワードから貼り付け」ボタンではなく、普通に貼り付けると、大量に文字列が挿入される。
と書いたのですが、仕事場の Word2003 では発生するのに、自宅の Word98 では発生しません。html タグではない文字列(直感的には、ワードの行属性に関するマクロのようにも見えます)が100文字以上も挿入されてきます。普通のタグのサニタイズではうまくいかないような気がします。仕事場から、具体的なコードを持って帰ってこなかった(お示しできない)のが、少々悔やまれます。

また、何か気づいたら報告します。仕事柄、表を貼り付けたいと思っていた頃でしたので、当分喜んで使うと思います。


Hibert, an amateur Mathematist

オフライン

#5 2008-12-09 11:17:26

yama
Administrator
登録日: 2005-07-07
投稿: 1,270
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

hilbert さんの発言:

ちなみに、TinyMCE が入っている状態では、ちゃんと結合セルは変換してくれます。

これはTinyMCEの機能ですね。厳密にはTinyMCEの拡張機能として組み込まれているもので、もとはTinyMCEフォーラムの常連さんが投稿したものがベースになっているみたいです。この2~3年ほど手入れがないみたいですが、詳しく報告を入れることができると対応を検討していただけるかも。

NP_ExcelPasteは全く挙動が異なるプラグインで、投稿内容には全く変更を加えません。NP_WikiStyleやNP_AutoLinkなどと同様、出力時にフィルター的に動作します。

オフライン

#6 2009-06-20 03:07:04

boff
メンバー
From: Fukuoka
登録日: 2006-10-11
投稿: 149
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

いつもお世話になっています。

NP_ExcelPasteをインストールして画像のように使ってみたのですが、変換されません。
何か、別のプラグインと組み合わせないと利用できないのでしょうか?

よろしくお願いいたします。


Attachments:
jpg ex01.jpg, Size: 39.57 KiB, Downloads: 557
jpg ex02.jpg, Size: 11.33 KiB, Downloads: 645

・Nucleus CMS v3.41RC
・PHP 5.2.17
・MySQL 4.1.25
・Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

オフライン

#7 2009-06-20 03:42:56

boff
メンバー
From: Fukuoka
登録日: 2006-10-11
投稿: 149
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

追加でもうひとつ。

プラグインをインストールした状態で、ブログのアイテムを単独(個別のアイテムページ)でみたときに、改行が無効化(?)されてしまうようです。
メインの目次ページでみるときには、改行は無効化されていません。

ちなみに、表を貼り付けてない状態ででもです。

わかりにくい表現ですいません。


・Nucleus CMS v3.41RC
・PHP 5.2.17
・MySQL 4.1.25
・Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

オフライン

#8 2009-06-21 08:53:53

yama
Administrator
登録日: 2005-07-07
投稿: 1,270
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

汎用化をほとんど考慮してないプレーンなプラグインなので、スキンタイプによって挙動が違うということはないと思うのですが・・何か他のプラグインの影響ということはないでしょうか?改行が無効になるのはremoveBreaksという処理が入ってるからだと思いますが、これはなくてもいいかもしれません。(「$text = removeBreaks($text);」を行ごと削除)

仕組みとしては、タブ文字を<td></td>に置き換えてるだけです。

オフライン

#9 2009-06-21 13:00:16

boff
メンバー
From: Fukuoka
登録日: 2006-10-11
投稿: 149
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

yama.kymsさんへ

すいません!
プレビューで確認しただけだったので、わからなかったのですが、
アイテムを投稿してみたら、ちゃんと表組みされていました。

それから改行の件も、できました。

お騒がせいたしました。 :oops:


・Nucleus CMS v3.41RC
・PHP 5.2.17
・MySQL 4.1.25
・Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

オフライン

#10 2009-06-21 13:12:14

boff
メンバー
From: Fukuoka
登録日: 2006-10-11
投稿: 149
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

できたことはできたのですが、NP_Amazonの表示に影響が出てしまいました。 lol

とりあえず、ご報告まで。


CSSで対処できるのかな?


Attachments:
png tmpUUcLir.png, Size: 60.05 KiB, Downloads: 541

・Nucleus CMS v3.41RC
・PHP 5.2.17
・MySQL 4.1.25
・Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

オフライン

#11 2009-06-21 13:30:05

yama
Administrator
登録日: 2005-07-07
投稿: 1,270
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

タブ文字を含む行しか処理しないはずなんですが、変な感じですね。

あと、PreItemイベントを使うプラグインなので・・プラグインの実行順序に左右されることもあるかもしれません。管理画面のプラグイン一覧の一番上に持ってくるか、あるいは一番下に持ってくるかなどです。

オフライン

#12 2009-06-21 13:42:16

boff
メンバー
From: Fukuoka
登録日: 2006-10-11
投稿: 149
ウェブサイト

Re: NP_ExcelPaste - エクセルで作った表組をコピペでTableタグに変換

yama.kymsさんへ

何度もすいません!

プラグインリストの順番をNP_Amazonよりも上に持っていた時点で影響しなくなりました! big_smile


・Nucleus CMS v3.41RC
・PHP 5.2.17
・MySQL 4.1.25
・Apache/1.3.41 (Unix) mod_ssl/2.8.31 OpenSSL/0.9.8e

オフライン

Board footer