|
分類:[C#]
開発:VS2019 .NetFramework 4.0
Excel2019
ClosedXML:0.87.0.0
OpenOffice:4.1.3
資料アップロード:http://dtbn.jp/ygEMZhqR
C#で印刷処理のファームアプリを作成しています。
・Excel2019で記録表のテンプレートファイルを作成
・テンプレートにClosedXMLで記録表の値を代入
・OpenOfficeで印刷プレビューを表示
プレビューしたときにテンプレートの表示がおかしくなります。
テンプレートの記録表には、「項目1」「項目2」「項目3」や「備考」など項目名を代入しているセルがあります。
あるセルに値を代入して、印刷プレビューを表示させると、
項目名が二重になってしまいます。
「項目1」の行に値を代入したときは、正常に表示されます。
「項目2」の行に値を代入すると、表示がおかしくなります。
試しにテンプレートの項目名を削除して、
記録表の値を代入するときに、項目名も代入するようにしました。
しかし、結果は同じようにおかしくなります。
なぜ「項目2」の行に値を代入するとおかしくなるのでしょうか?
原因と対応策をお教えください。
よろしくお願いいたします。
// 記録表作成
public string KirokuSyuturyoku_EXCEL()
{
string ret = "";
// ClosedXMLを使ってxlsxファイルを作成する
// ファイル存在確認
string xlPath = Application.StartupPath + "\\Excel\\Kiroku.xlsx";
string saveName = "";
// エクセルオープン
ClosedXML.Excel.XLWorkbook workbook = null;
try
{
workbook = new XLWorkbook(xlPath);
}
catch
{
return ret;
}
finally
{
}
int Sheet = 1;
IXLWorksheet WS1 = workbook.Worksheet("sheet1");
// 問題なし
WS1.Cell(7, 13).Value = "〇";
WS1.Cell(11, 13).Value = "〇";
WS1.Cell(15, 13).Value = "〇";
WS1.Cell(19, 13).Value = "〇";
WS1.Cell(23, 13).Value = "〇";
// 問題あり(項目名がなぜか2重に表示されてる)
WS1.Cell(8, 13).Value = "〇";
WS1.Cell(12, 13).Value = "〇";
WS1.Cell(16, 13).Value = "〇";
WS1.Cell(20, 13).Value = "〇";
WS1.Cell(24, 13).Value = "〇";
// ファイルの保存
// 保存先
saveName = Application.StartupPath + "\\Kiroku.xlsx";
// ファイル保存
workbook.SaveAs(saveName);
ret = saveName;
return ret;
}
// 印刷プレビュー
public void PrintDlg(String xlPath)
{
//コンポーネントコンテキストオブジェクト取得(OpenOfficeの基本プロセスらしい)
XComponentContext context = Bootstrap.bootstrap();
//サービスマネージャ取得
XMultiServiceFactory factory = (XMultiServiceFactory)context.getServiceManager();
//コンポーネントローダオブジェクト取得
XComponentLoader loader = (XComponentLoader)factory.createInstance("com.sun.star.frame.Desktop");
//ファイルを開きドキュメントオブジェクトを生成
string docFile = "file:///" + xlPath;
try
{
// OpenOffice.org Calcの起動(ファイルを指定して起動)
XComponent doc = loader.loadComponentFromURL(docFile, "nom_fic", 0, new PropertyValue[0]);
XFrame frame = ((XModel)doc).getCurrentController().getFrame();
// 印刷プレビューを開く
XDispatchHelper dispatch_helper = (XDispatchHelper)factory.createInstance("com.sun.star.frame.DispatchHelper");
dispatch_helper.executeDispatch((XDispatchProvider)frame, ".uno:PrintPreview", "", 0, new PropertyValue[0]);
// OpenOffice.org Calcの起動(ファイルを指定して起動)
//XComponent doc = loader.loadComponentFromURL(docFile, "_blank", 0, new unoidl.com.sun.star.beans.PropertyValue[0]);
//XSpreadsheetDocument spredsheetDocument = (XSpreadsheetDocument)doc;
}
catch (unoidl.com.sun.star.uno.Exception ex)
{
MessageBox.Show(ex.Message);
}
// 閉じる
if (doc != null)
{
XCloseable xCloseable = (XCloseable)doc;
xCloseable.close(true);
doc = null;
}
}
|