JMP は JSL を介して Excel の書式設定をサポートできますか全て、
このトピックに関するコミュニティのいくつかの異なる投稿を見て、私は自分の質問に対する答えを知っていると信じています. ただし、引き続き先に進み、問題を要約し、他の誰かがこの道をたどっているかどうかを確認します.
問題文: 以前に承認および認識されたテンプレートで Excel ワークブックを生成します
議論のためではない: Excel が選択された出力形式である理由
次の投稿を通過する際に:
- https://community.jmp.com/t5/Discussions/Excel-Table-Formatting/mp/33650#M19957
- https://community.jmp.com/t5/Martin-Demel-s-Blog/JMP-and-Excel-A-Never-ending-story-Part-2-cont/ba-p/35941 (およびトピックに関するすべての関連ブログ投稿)
- https://community.jmp.com/t5/Discovery-Summit-2016/Working-With-Excel-the-Advanced-Edition/ta-p/23969
当然のことながら、Excel と JMP の間でデータをインポートおよびエクスポートする方法に多くの焦点が当てられています。 しかし、JMP や Excel からエクスポートされたデータの形式を維持/カスタマイズすることについて実際に言及しているものはありません。 好むと好まざるとにかかわらず、Excel は今後も存続し、Excel を介して結果を提示する必要性が継続的に存在します (少なくとも、すべてのユーザーが JMP ライセンスを取得できるわけではありません)。
その背景を踏まえて、私は Excel テンプレートを持っており、Excel テンプレートを使用して一部のデータを編集したいと考えています。 JSL好ましい。 これは、私が JMP で作成した非常に大きなアプリケーションの最後のステップです。 理想的には、JMP でテンプレート内のデータを編集してワークブックを保存するだけです。 残念ながら、JMP でファイルを開いた瞬間に期待できるように、書式設定が乱れ、ユーザーに実際に表示できない文字化けした書式が残ります。
それで、
1. VBA ではなく JSL を使用して、Excel テンプレートの書式設定を保持し、ファイル内のデータを編集する方法はありますか?
2. 前の質問に対する答えが「いいえ」であると仮定すると、R で「XLConnect」パッケージを使用する道をたどりました。 しかし、それもまた問題に直面しています。 なぜRパッケージが結果を出さないのかという質問にJMPコミュニティが答えるとは思えません。 支援に関心のある方は、R コードを以下に示します。私が実験しているテンプレートの例も添付されています
# Clear Console and screen
cat("\014") # Clear Console
rm(list = ls(all = TRUE)) # Clear Workspace
options(java.parameters = "- Xmx1024m")
# Load desired packages
suppressPackageStartupMessages(library(XLConnect))
# Define FilePaths
FolderPath <- "C:\\Users\\Temp\\Desktop"
TemplateFilePath <- paste(FolderPath, "LoanTemplate.xlsx", sep = "\\")
OutputFilePath <- paste(FolderPath, "MyLoan.xlsx", sep = "\\")
OutputFilePath1 <- paste(FolderPath, "MyLoan1.xlsx", sep = "\\")
OutputFilePath2 <- paste(FolderPath, "MyLoan2.xlsx", sep = "\\")
# Read Data
TemplateData <- readWorksheetFromFile(TemplateFilePath, sheet = 'Loan Schedule', header = T)
MyData <- TemplateData
MyData[[4]][2] <- 10000
# Set Style Action
setStyleAction(wb, XLC$"STYLE_ACTION.NONE")
# Trial 1
writeWorksheet(OutputFilePath, MyData, 'Loan Schedule', styleAction = XLC$STYLE_ACTION.XLCONNECT, clearSheets = TRUE)
# Trial 2
writeWorksheetToFile(OutputFilePath1, MyData, 'Loan Schedule', styleAction = XLC$STYLE_ACTION.XLCONNECT, clearSheets = FALSE)
#Trial 3
writeWorksheetToFile(OutputFilePath2, MyData, 'Loan Schedule')
Re: JMP は JSL を介して Excel の書式設定をサポートできますか@uday_guntupalli XML を編集して Excel を編集し、書式設定と関数を保存する代わりの方法があります。JMP 関数を使用して、Excel をデータベースとして扱います。 データベース レイアウトのシートでのみこれを実行しました。つまり、列がフィールドで、行がレコードです。
私は SQL の専門家ではありませんが、テーブルを使用して多数のデータベース レコードを更新する方法に関するドキュメントを見つけることができます。 簡単な例を示します。
以下は、2 つのシートと書式設定された単純な Excel ファイルの図です。ファイルはサプライヤー.xlsx更新するシートの名前はサプライヤー. 本JSL コンパニオン、第 2 版では、次の 3 つの JMP ODBC メソッドについて説明しています。データベースを開く() 、新しい SQL クエリ()そして、著者が3段階の方法と名付けたもの。

このメソッドを使用して、有効な SQL ステートメントを実行できます。以下は、SQL を使用して 1 つのレコードを変更するスクリプトです。アップデート構文。
dbc = create database connection("DSN=Excel Files; DBQ=c:\temp\suppliers.xlsx");
Execute sql(dbc, "SELECT * FROM `suppliers$` WHERE supplier_name = 'Google' ", "READIT"); //example extraction
Execute sql(dbc, "UPDATE `suppliers$`
SET supplier_id = 150,
supplier_name = 'Apple',
city = 'Cupertino'
WHERE supplier_name = 'Google'");
close database connection(dbc);
Before the SQL scriptBefore the SQL scriptSQLスクリプトの前
After the SQL Update - red box drawnAfter the SQL Update - red box drawnSQL 更新後 - 描かれた赤いボックス
フォーマットは変更されないことに注意してください。別のテーブルを使用したデータベースの UPDATE のパフォーマンスを証明することはできませんが、システムの更新は通常かなり高速です。 適切な SQL 構文については、Web 検索を実行できます。 この方法に興味があり、32 ビットの Microsoft Office を使用している場合は、マシン ファイル接続の 1 回限りのセットアップを完了するためにいくつかの手順が必要です (Excel へのマシン接続の名前は次のとおりです)。 Excelファイル)。
これは、そのすべてを議論するフォーラムではありません。 ご要望があれば、私たち(著者)は補足文書を作成しました。
あなたの最後の投稿から、あなたが望むことをするための R メソッドがあるようです。そのため、私は返信するつもりはありませんでしたが、クロージャー/代替手段として別のメソッドをミックスに追加することにしました。
Re: JMP は JSL を介して Excel の書式設定をサポートできますか@ian_jmp 、
あなたが共有した例で、JSL を使用して XML の値を編集する方法について詳しく教えてください。
Re: JMP は JSL を介して Excel の書式設定をサポートできますかこれは、以前の投稿のマルチシート バージョンです。 注 JMP 12 では、表を 1 つのシートの Excel ワークブックにのみ保存できます。JMP 13は機能を有効にしましたExcel ワークブックの作成()ただし、テーブル参照ではなく、JMP テーブル名のリストが必要でした。 JMP 14 では、開いているテーブル名のリストまたはテーブル参照のいずれかを使用できます。
仕組みは次のとおりです。
- 添付ファイルを保存ファイル multi_tblFmt.txt何度も使用するプログラムを保存するパスに、名前を変更して拡張子 .vbs を付けます。
- JMP 12 以降で wscript を使用している場合 (MAC がわからない PC)、JSL ファイルを開きます。 CreateExcelTable_Style.jsl必要に応じて、.vbs ファイルと保存された Excel ファイル (save_path) のパス名を変更します。
JMP が使用する Excel テンプレートは次のとおりです。
- JMP v12 および JMP v13、TableStyleMedium6 は水色、TableStyleMedium2 は青です。
- JMP v14 TableStyleMedium6 は青です。
.vbs ファイルをメモ帳で編集して、好みのスタイルを指定します。 (Excel では、[ホーム] > [書式] > [テーブル] )。
最後の注意: .vbs ファイルには、対話型メッセージを生成するコードの "IF" ブロックが含まれています。 このスクリプトを非対話的に実行する場合は、この if ブロックを削除するか、コメント アウトする必要があります。.vbs ファイルのコメントを参照してください。
Re: JMP は JSL を介して Excel の書式設定をサポートできますかこの返信はそれほど多くのことではありません@uday_guntupalliただし、このディスカッションにフォロワーがいて、列ヘッダーにフィルター/スライサーが含まれるより快適な形式で JMP テーブルを Excel に保存できるようにしたいというブログの場合に備えて。 以下に示す解決策は、保存の単純なケースでのみ機能します一.xlsx ファイルの JMP テーブル。VBScript コードには、すべてのシートを検索し、各シートで実行する for ループ ラッパーを作成する追加のコードが必要です。 私は VBS が苦手で、上半身の構文の助けを借りています。 関心がある場合は、コメントを投稿してください。VBSCript を拡張します。
仕組みは次のとおりです。
- 添付ファイルを保存するtblFmt.txt何度も使用するプログラムを保存するパスに、名前を変更して拡張子 .vbs を付けます。
- JSLファイルを開くCreateExcelTable_Style.jsl必要に応じて、.vbs と保存された Excel ファイルのパス名を変更します。
vbs コードに関する注意事項:
- 組み込みのExcelを適用しますTableStyleMedium6濃い青のヘッダー、水色と白の交互の行、および列フィルター (スライサー) を生成する最初のシートのテーブルに。
- ヘッダーのフォントが Arial Black、サイズ 12、太字に変更されました
- テーブルは EntireColumn に AutoFit されます。 これは、すべての場合に役立つとは限りません。
この VBS コードは、この JSL スニペットのパス名を変更することにより、任意の JSL プログラムで呼び出すことができます
dt << Save("c:/temp/Biggie Class.xlsx");
//command line syntax: wscript path\tblFmt.vbs 'path to excel workbook'
rp4 = RunProgram(Executable("wscript"),
Options({"c:\temp\tblFmt.vbs", "\!"c:\temp\biggie class.xlsx\!""}),
ReadFunction("text")
);
JMP 開発者への注記 ( @ian_jmp ) : Book.xltx を既定の Excel テンプレートにしてみました。 成功しなかったか、JMP が使用していないかのどちらかです。 成功した場合、vbs コードでカスタム テーブル スタイルを指定できたはずです。あウィッシュリストアイテムは、.xltx テンプレート ファイルを指定するオプションの引数と、適用されるカスタム スタイルを適用する TableStyle 名を持つ Create Excel Workbook() の拡張である可能性があります。Excel のバージョン、64 ビットと 32 ビットの MicrosoftOffice の問題などに関連していることに気付きました。これは私のリストの上位ではありませんが、Excel テーブルのリクエストが頻繁にあるようです。
Re: JMP は JSL を介して Excel の書式設定をサポートできますか@gzmorgan0 、
単純化された例で VBA を使用することは合理的に思えますが、実際の問題ステートメントでは、複数の値を変更する必要があり、VBA なしで行うことをお勧めします。 R コードを動作させることができました。 @ian_jmp提案も。 しかし、もう1つのオプションを提供していただきありがとうございます。 メリークリスマス。
Re: JMP は JSL を介して Excel の書式設定をサポートできますか@uday_guntupalliあなたのニーズは明確ではありません。あなたが提供したようなテンプレートがあり、すべてのマクロ コーディングと式が含まれていて、いくつかの値を変更するだけでよい場合は、いくつかの vbscript コマンドを学習して、[プログラムの実行] を使用できます (以下を参照)。
JMP ファイル Big Class を xslx として保存し、1 つのセルの形式を変更するスクリプトを添付して、JSL を使用してこれをコーディングする方法を示します。
私は XML スキーマの専門家ではないので、Ian のアプローチが必要かもしれません。
元本、日数、利率、追加支払額を変更するJSL。
Names Default to Here(1);
cmdList={"Dim xlApp",
"\[Set xlApp = CreateObject("Excel.Application")]\",
"xlApp.Visible = True",
"\[xlApp.Workbooks.Open ("C:\TEMP\Loan Template.xlsx")]\",
"'Change the values in cells e3-e5, e9",
"\[xlApp.Range("E3").Select]\",
"\[xlApp.ActiveCell.Value = 10000]\",
"\[xlApp.Range("E4").Select]\",
"\[xlApp.ActiveCell.Value = .044]\",
"\[xlApp.Range("E5").Select]\",
"\[xlApp.ActiveCell.Value = 2]\",
"\[xlApp.Range("E9").Select]\",
"\[xlApp.ActiveCell.Value = 150]\",
"\[xlApp.ActiveWorkbook.SaveAs("C:\TEMP\Loan v2.xlsx")]\",
"xlApp.Quit"
};
vbsTxt = concat items(cmdList, "\!N"); //add new lines aka CR
Save Text File( "c:\temp\jj2.vbs" , vbsTxt);
rp4 = RunProgram(Executable("wscript"),
Options("c:\temp\jj2.vbs"),
ReadFunction("text")
);
Caption( "JuMP has Control", Font( "Arial Black" ), //u is added for spoken voice to say and not spelll JMP.
Font Size( 16 ),
Text Color( "red" ), Spoken(1)
);
wait(2);
Caption(Remove);
//look at the Excel file, the color coding is maintained for new payment schedule
Re: JMP は JSL を介して Excel の書式設定をサポートできますかR で問題が発生している場合は、別の「JMP のみ」のルートを検討してください。 これが実際にどれほど実行可能かはわかりません。
Names Default To Here( 1 );
// .XLSX is a ZIP file
package = Open( "$DESKTOP/Loan Template.xlsx", zip );
// See what's in the package
dirlist = package << dir;
Print(dirlist);
// Get the XML
xml = package << read(dirlist[9]);
// Manipulate XML with JSL?
Print(xml);
// Update the package
package << Write(dirlist[9], xml );