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" 패키지를 사용하는 경로를 따라갔습니다. 그러나 그것도 문제가 되고 있습니다. JMP 커뮤니티에서 R 패키지가 결과를 내지 못하는 이유에 대한 질문에 답할 것이라고는 생각하지 않습니다. 도움을 주고자 하는 사람이 있다면 아래에 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 Excel을 편집하고 형식과 함수를 저장하기 위해 XML을 편집하는 대신 JMP 함수를 사용하여 Excel을 데이터베이스로 취급할 수 있습니다. 데이터베이스 레이아웃이 있는 시트에서만 이 작업을 수행했습니다. 즉, 열은 필드이고 행은 레코드입니다.
저는 SQL 전문가는 아니지만 많은 데이터베이스 레코드를 테이블로 업데이트하는 방법에 대한 문서를 찾을 수 있습니다. 간단한 예를 들겠습니다.
아래는 두 개의 시트와 서식이 있는 간단한 Excel 파일의 그림입니다.파일이 호출됩니다 공급자.xlsx 업데이트할 시트의 이름은 공급자 . 그 책 JSL Companion, 2판 , 세 가지 JMP ODBC 방법 문서화: 데이터베이스 열기() , 새 SQL 쿼리() 저자 중 한 명은 3단계 방법을 명명했습니다.

이 방법은 유효한 SQL 문을 실행하는 데 사용할 수 있습니다.다음은 SQL을 사용하여 하나의 레코드를 변경하는 스크립트입니다. 업데이트 통사론.
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 drawn SQL 업데이트 후 - 빨간색 상자가 그려짐
형식은 변경되지 않습니다.다른 테이블을 사용한 데이터베이스 업데이트의 성능을 증명할 수는 없지만 시스템 업데이트는 일반적으로 매우 빠릅니다. 적절한 SQL 구문에 대한 웹 검색을 수행할 수 있습니다. 이 방법에 관심이 있고 32비트 Microsoft Office가 있는 경우 컴퓨터 파일 연결의 일회성 설정을 완료하는 데 몇 가지 단계가 필요합니다(Excel에 대한 내 컴퓨터 연결 이름은 엑셀 파일 ).
이것은 그 모든 것을 논의하는 포럼이 아닙니다. 우리(저자)는 요청하시면 보충 문서를 작성했습니다.
마지막 게시물에서 원하는 작업을 수행할 수 있는 R 방법이 있는 것 같아서 답장하지 않고 다른 방법을 믹스에 추가하기 위해 폐쇄/대안을 결정했습니다.
Re: JMP가 JSL을 통해 Excel 서식을 지원할 수 있습니까?@ian_jmp ,
공유한 예에서 JSL을 사용하여 XML의 값을 편집하는 방법에 대해 자세히 설명해 주시겠습니까?
Re: JMP가 JSL을 통해 Excel 서식을 지원할 수 있습니까?이전 게시물의 다중 시트 버전은 다음과 같습니다. 참고 JMP 12에서는 테이블을 단일 시트 Excel 통합 문서에만 저장할 수 있습니다.JMP 13에서 기능 활성화 Excel 통합 문서 만들기() 그러나 테이블 참조가 아닌 JMP 테이블 이름 목록이 필요했습니다. JMP 14에서는 열린 테이블 이름 또는 테이블 참조 목록을 허용합니다.
작동 방식은 다음과 같습니다.
- 첨부 저장 파일 multi_tblFmt.txt 자주 사용하는 프로그램을 저장하는 경로에 .vbs 확장자를 갖도록 이름을 바꿉니다.
- wscript(MAC에 대해 잘 모르는 PC)와 함께 JMP 12 이상을 사용하는 경우 JSL 파일을 엽니다. CreateExcelTable_Style.jsl 필요한 경우 .vbs 파일 및 저장된 Excel 파일(save_path)의 경로 이름을 변경합니다.
JMP에서 사용하는 Excel 템플릿은 다음과 같습니다.
- JMP v12 및 JMP v13에서 TableStyleMedium6은 청록색이고 TableStyleMedium2는 파란색입니다.
- JMP v14 TableStyleMedium6은 파란색입니다.
메모장으로 .vbs 파일을 편집하여 선호하는 스타일을 지정하십시오. (엑셀에서는 홈>서식>표).
최종 참고 사항: .vbs 파일에는 대화형 메시지를 생성하는 "IF" 코드 블록이 포함되어 있습니다. 이 스크립트를 비대화식으로 실행하는 경우 이 if 블록을 제거하거나 주석 처리해야 합니다..vbs 파일 주석을 참조하십시오.
Re: JMP가 JSL을 통해 Excel 서식을 지원할 수 있습니까?이 답변은 그다지 @uday_guntupalli 그러나 이 토론에 열 머리글에 필터/슬라이서가 포함된 보다 쾌적한 형식으로 JMP 테이블을 Excel에 저장할 수 있기를 원하는 팔로워가 있는 경우 블로그의 경우입니다. 아래 제공된 솔루션은 간단한 저장 사례에서만 작동합니다. 하나 .xlsx 파일의 JMP 테이블.VBScript 코드는 모든 시트를 찾고 각 시트에서 실행할 for-loop 래퍼를 만들기 위한 추가 코드가 필요합니다. 나는 VBS에 능숙하지 않으며 더 나은 절반의 구문 도움을 요청했습니다. 관심이 있는 경우 의견을 게시하면 VBSCript를 확장합니다.
작동 방식은 다음과 같습니다.
- 첨부파일 저장 tblFmt.txt 자주 사용하는 프로그램을 저장하는 경로에 .vbs 확장자를 갖도록 이름을 바꿉니다.
- JSL 파일 열기 CreateExcelTable_Style.jsl 필요한 경우 .vbs 및 저장된 Excel 파일의 경로 이름을 변경합니다.
vbs 코드와 관련하여 참고할 항목:
- 내장된 엑셀을 적용합니다. TableStyleMedium6 진한 파란색 머리글, 밝은 파란색과 흰색 행이 번갈아 표시되고 열 필터(슬라이서)를 생성하는 첫 번째 시트의 테이블에 추가합니다.
- 헤더 글꼴이 Arial Black, 크기 12, 굵게 변경됨
- 테이블은 EntireColumn에 자동 맞춤입니다. 이것은 모든 경우에 유용하지 않을 수 있습니다.
이 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를 기본 엑셀 템플릿으로 만들어 보았습니다. 내가 성공하지 못했거나 JMP에서 사용하지 않는 것입니다. 성공하면 내 vbs 코드가 사용자 정의 테이블 스타일을 지정할 수 있습니다.ㅏ 위시리스트 항목은 .xltx 템플릿 파일을 지정하는 선택적 인수와 적용할 사용자 지정 스타일을 적용할 TableStyle 이름을 포함하는 Create Excel Workbook()의 확장일 수 있습니다.Excel 버전, 64비트 대 32비트 MicrosoftOffice 등의 문제가 있다는 것을 알고 있습니다. 이것은 내 목록에서 높지 않지만 빈번한 Excel 테이블 요청이 있는 것 같습니다.
Re: JMP가 JSL을 통해 Excel 서식을 지원할 수 있습니까?@gzmorgan0 ,
단순화된 예제에서 VBA를 사용하는 것은 합리적으로 보이지만 실제 문제 설명에서는 여러 값을 수정해야 하며 VBA 없이 수행하는 것을 선호합니다. R 코드를 작동시킬 수 있었고 작업 방법을 확인하려고 합니다. @ian_jmp 제안도. 그러나 하나의 옵션을 더 제공해주셔서 감사합니다. 메리 크리스마스.
Re: JMP가 JSL을 통해 Excel 서식을 지원할 수 있습니까?@uday_guntupalli 귀하의 요구 사항이 명확하지 않습니다.귀하가 제공한 템플릿과 같이 모든 매크로 코딩 및 수식이 있고 몇 가지 값만 변경하면 되는 경우 몇 가지 vbscript 명령을 배우고 프로그램 실행을 사용할 수 있습니다(아래 참조).
첨부된 스크립트는 JMP 파일 Big Class를 xslx로 저장하고 한 셀의 형식을 변경하여 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 );