2017-06-22 121 views
3

我正在创建一个脚本,它显示一个对话框,我可以选择保存文件的路径。以下几乎得到它,但这是打开一个文件,而不是保存它。从Enterprise Architect脚本保存文件

var filePath = OpenCSVFileDialog(); 
var fileName = GetFilenameFromPath(filePath);  


function OpenCSVFileDialog() 
{ 
    var Project; 
    var Filename, FilterString, Filterindex, Flags, InitialDirectory, OpenorSave, filepath; 

    Filename = ""; 
    FilterString = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*||"; 
    Filterindex = 1; 
    Flags = 0; 
    InitialDirectory = ""; 
    OpenorSave = 0; 

    Project = Repository.GetProjectInterface(); 
    filepath = Project.GetFileNameDialog(Filename, FilterString, Filterindex, 
             Flags, InitialDirectory, OpenorSave); 

    return filepath; 
} 

function GetFilenameFromPath(filePath) 
{ 
    var bsindex, fileName; 

    // find the last backspace in the file path 
    bsindex = filePath.lastIndexOf("\\"); 

    if (bsindex > 0) 
    { 
     // get the name of the file only - minus the directory path 
      fileName = filePath.substring(bsindex+1, filePath.length); 
    } 
    else 
    { 
     fileName = filePath; 
    } 

    return fileName; 
} 

回答

1

GetFileNameDialog是V13中的新功能。尝试OpenOrSave参数的不同参数(文档也可能有缺陷)。 Sparx总是运送香蕉软件!如果它也不起作用,请发送错误报告。

或者(首选!)使用@Hue指出的操作。

+0

从来没有实际使用过GetFileNameDialog,我没做过的好事,如果它的破损 – Mart10

+0

感谢thomas和Hue,我只是使用了OpenOrSave = 1; – byandreee

+0

由于我不会,请发送错误报告,以便更新文档。谢谢。 –

3

要获取文件路径,使用EAScriptLib脚本组中提供的Jscript-Dialog脚本,它会阻止你重写整个代码用于获取对话框。

(引用另一个脚本,使用!INC,在这种情况下,把!INC EAScriptLib.JScript-Dialog到脚本的顶部)

呼叫​​,并提供:

  • 过滤字符串,在你的情况下,它CSV Files (*.csv)|*.csv|All Files (*.*)|*.*||
  • 您要使用的过滤器(在前一点)的索引,您已经提供

它将返回文件的路径。

您可以使用Project.GetFileNameDialog,这是同样的事情,但有更多的参数also, here's a link

如果使用CSV库创建CSV文件,那么一旦你调用CSVEExportFinalize()功能的文件应该被导出。你必须叫CSVEExportInitialize(filepath,columns,exportcolumsHeadings)第一

对于任何文件,也可以使用JScript和VBScript,但不是JavaScript的

的JScript

var fso = new ActiveXObject("Scripting.FileSystemObject"); 
var a = fso.CreateTextFile("c:\\testfile.txt", true); 
a.WriteLine("This is a test."); 
a.Close(); 

做VB

Dim fso, MyFile 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set MyFile = fso.CreateTextFile("c:\testfile.txt", True) 
MyFile.WriteLine("This is a test.") 
MyFile.Close 

Microsoft Reference

+0

他专注于要求文件名的电话! –

+0

@ThomasKilian eh没有太注意他的代码,以为他试图保存文件,没有得到实际的路径...将编辑我的答案 – Mart10

相关问题