2017-06-22 235 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

相關問題