2

在我的应用程序中,export excel or csv file然后在 excel 或记事本中显示文件。在这种情况下,我使用

电子表格:

  Dim xExcelFilePath As String = System.Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\Microsoft Office"
            xDir = New DirectoryInfo(xExcelFilePath)
            For Each xDirectory As DirectoryInfo In xDir.GetDirectories ' it use for find any version of excel is installed or not
                If xDirectory.Name.Count < 6 Then Continue For
                If xDirectory.Name.Trim.Substring(0, 6).ToUpper = "OFFICE" Then
                    If System.IO.File.Exists(xExcelFilePath & "\" & xDirectory.Name & "\EXCEL.EXE") Then
                        xExcelFilePath = xExcelFilePath & "\" & xDirectory.Name & "\EXCEL.EXE"
                        Exit For
                    End If
                End If
            Next
            If System.IO.File.Exists(xExcelFilePath) Then
                Dim p As New Process() ' xExcelFilePath means start and stop the local system process
                p.StartInfo.UseShellExecute = True
                p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
                p.StartInfo.FileName = xExcelFilePath ' Assaign the file name
                p.StartInfo.Arguments = """" + xDestinationPath + """"
                Grid1.SaveExcel(xDestinationPath, FarPoint.Win.Spread.Model.IncludeHeaders.ColumnHeadersCustomOnly) ' Export the Excel File
                p.Start()

            Else
                Msg.Err("Could not find Excel installed on this system; file saved to:" + xExcelFilePath + ".")
            End If

记事本:

 Dim p As New Process() ' xExcelFilePath means start and stop the local system process
            p.StartInfo.UseShellExecute = True
            p.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
            p.StartInfo.FileName = "C:\windows\notepad.exe"
            p.StartInfo.Arguments = """" + Application.StartupPath & Grid1.ActiveSheet.SheetName & ".csv" + """"
            xCSVSheet.SaveTextFile(Application.StartupPath & Grid1.ActiveSheet.SheetName & ".csv", TextFileFlags.None, Model.IncludeHeaders.BothCustomOnly, "", ",", "")
            p.Start()

在某些系统excel file路径中的上述代码中,并非按此顺序排列,因此它会抛出异常并Notepad exe在此处静态添加。如何获取系统中的exe file路径?

4

2 回答 2

2

不要担心确切的路径,让 Windows 来处理。如果要使用记事本打开文件,只需使用以下代码:

Process.Start("notepad.exe", Application.StartupPath & Grid1.ActiveSheet.SheetName & ".csv")

要启动程序最大化,您必须将其更改为以下内容:

    Dim startInfo As New ProcessStartInfo("notepad.exe")
    startInfo.WindowStyle = ProcessWindowStyle.Maximized
    startInfo.Arguments = """" & Application.StartupPath & Grid1.ActiveSheet.SheetName & ".csv"""
    Process.Start(startInfo)
于 2013-09-12T13:17:47.177 回答
0

尝试这个:

 Dim excelpath = Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\excel.exe", "Path", "Key does not exist")
                  excelpath=  excelpath & "EXCEL.EXE" 
     Shell(Chr(34) & excelpath & Chr(34) & " " & Chr(34) & FLE & Chr(34), vbNormalFocus)

在我的情况下,FLE 是 XML 文件

于 2018-01-03T13:32:16.280 回答