Csvファイルを開いたときのデフォルトフォント設定について

CSVファイルを読み込んだ際のデフォルトフォント設定、またはテンプレートの適用が可能であれば方法を教えて下さい。

Version 7.1.6.2

テンプレートを適用したodsファイルにCSVファイルのデータをコピペする、くらいしか思いつかないです。

私としても、「新規作成される全てのファイルのデフォルトスタイルに適用されるフォント」はわかっても、「CSVのみに対してのデフォルトフォントを変更したい」という方法は現在無いという認識です。

https://opengrok.libreoffice.org/xref/core/sc/source/core/data/stlpool.cxx?r=8930b1f6#256

https://opengrok.libreoffice.org/xref/core/sc/source/ui/docshell/docsh.cxx?r=36940a65#597

https://opengrok.libreoffice.org/xref/core/sfx2/source/doc/objstor.cxx?r=14cfff50#755

https://opengrok.libreoffice.org/xref/core/sfx2/source/doc/objstor.cxx?r=14cfff50#698

https://opengrok.libreoffice.org/xref/core/sfx2/source/doc/sfxbasemodel.cxx?r=3f65724e#1916

https://opengrok.libreoffice.org/xref/core/sfx2/source/view/frmload.cxx?r=97fa8702#591

と、まぁ多分こんな感じで辿ってます。

1 Like

私見ですが、「新規作成」で使用されるテンプレート(「既定に設定」したやつ)のスタイルをベースにして欲しいところだな、と思ったりはしました。「既定に設定」って、自分が使うときの「標準設定」のつもりで作ってるものな気がするので…。
一方で、Writerのように、他ファイルからスタイル設定を読み込む機能がCalcやDrawにも欲しいですね…(今のところなさそう)。

1 Like

ありがとうございました。

1 Like

himajin100000 さん提案の方法は、逆発想で簡単だけど推奨できないのが難しいところ。
アジアンフォント書式と左右パッディングの設定方法がわからなかった。

この辺を変える手段がないので多分無理だと思います。

https://opengrok.libreoffice.org/xref/core/sc/source/core/data/docpool.cxx?r=1d4827a2#219

一瞬 “cjk-” か “-cjk” で指定するのかと思ったら違った
やはりできないのですね
ということはデフォルトのスタイルでアジアフォントの書式が指定されていないのは、バグではなく仕様ということですね

納得しました。返答ありがとうございました。

私も調べてみましたがテンプレートなどの書式を設定する方法は見つけられませんでした。
榎さん提案の別案として、ファイルからシートにデータを取り込む機能をご紹介しておきます。

シート>ファイルからシートを挿入>ファイルを指定

書式設定済みのシートを用意した上で上記の機能を使うと書式が適用される様です。

3 Likes

テンプレート案が採用されるまで、試してほしい代替として皆さんの提案の他に2つ紹介します

  1. オートフォーマットのスタイルを利用する
  2. マクロを利用する

オートフォーマットは現在ショートカットが登録されていないので自分で登録し
[Ctrl + *] で領域を選択後実行すれば使いやすいと思います
(アジアフォントは環境によっては不具合があるかもしれません)

当たり前ですが、マクロは手作業を自動化してくれるので大体のことができます
これもショートカットに登録すると良い
起動時イベントに登録すれば自動的に実行してくれます
コマンドラインからCSV読み込み後、自動実行するマクロを引数付きで指定することも可能

以下はCSVに関連しそうなコマンド

a.オートフォーマットの適用
【範囲・オブジェクト】.AutoFormat("…")

b.フォントの指定
【シート又は範囲・オブジェクト】.CharFontName = “…”

c.新規ファイルを開く(既存ファイル、テンプレートを含む)
StarDesktop.loadComponentFromURL(…)

d.シートにCSVファイルを読み込む(シートはクリアされる)
【シート・オブジェクト】.link(…)

e.現在のセルにCSVファイルを読み込む(範囲はクリアされる)
DispatchHelper .uno:InsertExternalDataSource による
マクロ記録で得られるBasicを流用するのが簡単

[c][d]を使えば指定のテンプレートにCSVを読み込むことが可能です

[a]のサンプル
選択中の範囲に “A1” という名前のオートフォーマットスタイルを適用する

Sub applyAutoFormatStyle_A1
    ThisComponent.CurrentSelection.AutoFormat("A1")
End Sub

[b]のサンプル
現在シート全体にフォントとサイズを指定する
最新版では開発ツールが付いているので拡張機能を入れなくても、どんなプロパティを設定すればどうなるか簡単に想像できるようになっています

Sub applyFontName
  With ThisComponent.CurrentController.ActiveSheet
    .CharFontName = "Consolas"
    .CharFontNameAsian = "MS ゴシック"
    .CharHeight = 12.0
    .CharHeightAsian = 12.0
  End With
End Sub

CSVファイルの時だけ実行するようにしたいなら

If Right(ThisComponent.title, 4) Like ".csv" Then
  ~ ~ ~
End If

マクロは禁止、でも拡張機能はOKという場合は
こっそり自作マクロ(Basic)を拡張機能として出力する機能で作成し、
コマンドラインから利用するという手もあります
(未検証ですが、おそらくできる)

1 Like