ホーム › フォーラム › A5:SQL Mk-2掲示板 › クエリ結果内の改行とHTMLコピーについて
-
投稿者投稿
-
AMC
ゲストSQLのクエリ結果をExcelに貼り付ける際、「表示中の結果セットを全体をコピー」(HTMLコピー)機能でコピーしたあと、Excelに貼り付ける運用をしています。
「表示中の結果セットをExcelへ出力」(Excel出力)と異なり、別途Excelが起動することがなく、シート内の好みの場所へ貼り付けられるため重宝しています。ところが、クエリ結果の値に改行が含まれている状態でHTMLコピー機能を使用してExcelに貼り付けると、改行によりセルが分割されて、それ以外のセルは結合された状態になります。
たとえば、下記のSQLを改行を含めそのままSQL Server上で実行すると、X列は改行を含まず、Y列は改行を含んだクエリ結果となります。
SELECT N’改行を含まないテキスト’ AS X, N’改行を含む
テキスト’ AS Yこの結果をHTMLコピーしてExcelのA1セルに貼り付けると、レコードは1行なのに、X列はA2セルとA3セルで結合され、Y列はB2セルとB3セルに分割された状態になってしまいます。
要望としては、結合を行うのではなく、セル内で改行をするようにしてほしいと考えています。
具体的には、X列はA2セルに、Y列はB2セルに改行を含んだまま出力されるイメージです。現状では、セル内に改行が含まれるときに限り、Excel出力をしたうえでコピー&ペーストすることで対処していますが、やはり都度Excelが起動するのは少し手間に感じてしまいます。
以下、調査したことを記載します。
まずこの挙動はExcelの仕様によるものだと思われます。
実際、下記のようなHTMLの表をブラウザ(Firefox)で表示し、それをコピーしてExcelに貼り付けると、今回と同じ挙動(改行でセル分割)となります。(念のため、<>を全角にしています。)<table border>
<tr><th>TEST</th></tr>
<tr><td>テスト<br>テスト</td></tr>
</table>詳しく調べたところ、Officeの独自CSSにこの改行を制御できる設定「mso-data-placement: same-cell」があるようです。
これをBRタグのstyleに設定して、先ほどのコピペを試したところ、改行でセルが分割されるのではなく、セル内で改行されるようになりました。(Firefoxで検証しました。EdgeではNGのようです。)<table border>
<tr><th>TEST</th></tr>
<tr><td>テスト<br style=”mso-data-placement: same-cell;” />テスト</td></tr>
</table>もしかしたら、A5M2の改行の出力を<br style=”mso-data-placement: same-cell;” />としていただくことで、達成できる可能性があるのではないかと期待しています。
以上、よろしくお願いいたします。
松原正和
キーマスターAMCさんこんにちは。
これは半ばあきらめていた挙動だったのですが、試してみました。
ですが、改行のあるデータが見た目上改行なしでExcelに張り付けられ、セルを編集モードにすると、改行付きテキストになる状態になってしまいました。
もうちょっとこちらでも調査してみます。 -
投稿者投稿