2016-08-03 11 views
0

Hallo, das ist, was ich tun möchte, ich möchte den .xls Namen oder die konvertierte Datei basierend auf dem ursprünglichen Dateinamen .dbf benennen. Beispiel ich konvertiere die acct_code.dbf, der Excel-Dateiname sollte acct_code.xls sein. Ich habe es versucht, aber es hat nicht funktioniert. Kann mir jemand helfen? Wie macht man das?C# - Ändern Sie den Dateinamen der konvertierten Datei auf der Grundlage des ursprünglichen Dateinamens

enter image description here

hier ist der Code.

private void button1_Click(object sender, EventArgs e) 
     { 
      DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog. 
      if (result == DialogResult.OK) // Test result. 
      { 
       textBox1.Text = openFileDialog1.FileName; 



      } 

     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      string constr = "Provider=VFPOLEDB.1;Data Source=" + Directory.GetParent(textBox1.Text).FullName; 
      string ExcelFileName = AppDomain.CurrentDomain.BaseDirectory + "converted_file.xls"; <--- here's the file name for excel file 
      using (OleDbConnection con = new OleDbConnection(constr)) 
      { 
       var sql = "select * from " + Path.GetFileName(textBox1.Text) + ";"; 
       OleDbCommand cmd = new OleDbCommand(sql, con); 
       DataTable dt = new DataTable(); 
       try 
       { 
        con.Open(); 
       } 
       catch (Exception ex) 
       { 

        MessageBox.Show("Error connecting database: " + ex.Message , "Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
        return; 
       } 
       if (con.State == ConnectionState.Open) 
       { 
        OleDbDataAdapter da = new OleDbDataAdapter(cmd); 
        MessageBox.Show("Reading database... ", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
        da.Fill(dt); 
        MessageBox.Show("Completed.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information); 
       } 
       if (con.State == ConnectionState.Open) 
       { 
        try 
        { 
         con.Close(); 
        } 
        catch { } 
       } 

       if (dt != null && dt.Rows.Count > 0) 
       { 
        GenerateExcel(dt, ExcelFileName); 
       } 
      } 

     } 

Antwort

2

Try this:

string originalFile = @"c:\Users\DonyaNenita\Desktop\Copro\install\acct_code.DBF"; 
string newFile = System.IO.Path.GetDirectoryName(originalFile) + "\\" + System.IO.Path.GetFileNameWithoutExtension(originalFile) + ".xls"; 
+0

'System.IO.Path.GetFileNameWithoutExtension (originalFile)' ist der Schlüssel. Danke bro :) – nethken

+1

Verwenden Sie System.IO.Path.Combine (VerzeichnisName, Dateiname) anstelle von VerzeichnisName + "\\" + Dateiname – Den

1

Es ist eine Methode, in der Path Klasse, die diese

string oldFile = @"C:\folder1\folder2\file.dbf"; 
string newFile = Path.ChangeExtension(oldfile, ".xls"); 
// newFile is now C:\folder1\folder2\file.xls 
1

tun Wenn eine Datei dann versuchen, diese Umbenennung:

System.IO.File.Move("oldfile.txt", "newfile.log"); 

Aber wenn Sie möchten, dass eine Funktion re Name einer Datei verwenden Sie dann entweder:

public void RenameFile(string path, string name) 
{ 
    System.IO.File.Move(Path.GetDirectoryName(filepath) + name + Path.GetExtension(filepath); 
} 

Wenn Sie nur einen neuen Namen dann verwenden wollen, dass diese:

string NewFileName = Path.GetDirectoryName(filepath) + "newfilename" + Path.GetExtension(filepath); 

Und wieder eine Funktion:

public string GetPathWithNewName(string path, string newname) 
{ 
    return Path.GetDirectoryName(path) + newname + Path.GetExtension(path); 
} 
+0

Dies beantwortet die Frage nicht, OP möchte nur den neuen Dateinamen generieren –

1

Sie auch die GetFileWithoutExtension verwenden können Methode:

string basename = System.IO.Path.GetFileNameWithoutExtension("foo.DBF"); 
string newFile = string.Join(".", basename, "xls"); 

war ich nicht sicher, wenn Sie umbenennen oder eine neue Datei erstellen ...

Verwandte Themen