C# – 根据原始文件名更改转换文件的文件名

您好,这是我想要做的,我想要的.xls名称或转换后的文件名称基于原始文件名.dbf 。 例如我转换acct_code.dbf ,excel文件名应该是acct_code.xls 。 我尝试concat它,但它没有工作。 有人能帮我吗? 这个怎么做?

在这里输入图像说明

这里是代码。

 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); } } } 

尝试这个:

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

Path类中有一个方法可以做到这一点

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

您也可以使用GetFileWithoutExtension方法:

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

我不知道你是否正在重命名或创build一个新的文件…

如果你重命名一个文件,然后试试这个:

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

但是如果你想要一个函数重命名一个文件然后使用:

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

如果你只是想要一个新的名字,然后使用这个:

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

又一个function:

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