2012年4月27日金曜日

◆Excel無しにExcelファイルを作る2

PowerShell: ◆Excel無しにExcelファイルを作る(サンプル)で基本的なところは分かったのだが、その後色々とExcelファイルを作っていると幾つか不明な部分が出てきて調査したので追記しておく。

<スタイルの指定方法>

書式を指定するためには「スタイル」を指定する必要があるのは前回調べた通りなのだが、独自のスタイルについてはテンプレートファイルで定義しているだけでは使用できない。
シートで予め使用している必要があるようだ。

これはどういう事かというと、まず独自のスタイルを作るには以下の手順となる。

  1. スタイルを展開
    image
  2. 「新しいセルのスタイル」をクリック
    image
  3. 「書式設定」ボタンで好きな書式を設定し「OK」ボタンで登録
    image

以上で、以下の通り独自のスタイルが登録される。
image

後は、PowerShellにて「スタイル1」を設定して行けば良いと思ったのだが残念なことにテンプレートに登録した「スタイル1」はこのままでは使用できない。

予めテンプレート中のシートでこの「スタイル1」を使用している必要があるのだ。

そこで、べたな方法ではあるがさしあたってシート中の適当な場所に「スタイル1」を適用しておき、処理の最後にその場所を「標準」に戻すなんて作業が必要になる。
image

<式の指定方法>

通常Excelの計算式では、相対参照を使っている限りにおいては「式のコピー」について自分でセルのずれなどを意識する必要はない。Excel様が良しなに取り計らってくれる。

しかし(当然の様な気もするが)、「ExcelPackage.dll」を使用している場合、「式のコピー」はあくまでもそのまま機械的なコピーなのでセル参照は自分でずらしていく必要がある。

$formula3 = '=SUM(D{0}:E{0})'

こんな感じで定義しておいて、セルをループしながら処理するときにフォーマット演算子で参照を入れ替えてあげる。

また、ここで設定する式はExcel自体があずかり知らないところで設定される式なのでこのタイミングでは計算が行われない。
単に入力用シートを作るのであれば入力した時に計算は行われるので問題はないが、値を設定しつつ合計は式で計算させてなどと考えると悩ましい感じになってしまう。「Ctrl + Alt + F9」を押して自分で強制的に計算させるかスタートアップマクロで計算させるか・・・。
式をあきらめて自分で計算して合計値も設定するか。

シートの用途次第で検討が必要になりそう。

<DBCS文字列のコピー方法>

どうも日本語への対応が完全ではないようで、日本語の入ったセルをコピーするとご親切にも「振り仮名」まで一緒にコピーされてしまう。

image

仕方がないので力技でカナを削除。

($sheet.Cell($firstRow+$_,$kubunCol).Value) -replace '\p{IsKatakana}+'

コピー元のカラムにもともとカナが入っていたりしたらその時に考える(笑)

0 件のコメント:

コメントを投稿