在附加字符串时难以保存模板

本文关键字:保存 字符串 | 更新日期: 2023-09-27 18:28:13

我正试图加载一个excel模板,然后在文件名后附加机器名和日期时间进行保存。我遇到的问题是,最终产品最终会变成:

"Template.xlsx_MachineName_DateTime.xlsx"

我似乎找不到摆脱第一个.xlsx的方法。我首先打开一个文件对话框,将路径保存为字符串。

OpenFileDialog fileDialog = new OpenFileDialog();
                string fileName = fileDialog.FileName;

然后我使用FileStream来保存文件。

                using (FileStream outputfile = new FileStream(fileName + machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx", FileMode.Create))
                {
                    package.SaveAs(outputfile);
                }

以前有人遇到过这种情况吗?我觉得应该有办法使用path.combine,但什么都想不出来。理想情况下,我希望结果为"Template_MachineName_DateTime.xlsx"。

在附加字符串时难以保存模板

使用System.IO.Path类获取文件名/路径的特定部分。

 string fileName = fileDialog.FileName;
 string newFilename = System.IO.Path.GetFileNameWithoutExtension(fileName) + 
           machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + ".xlsx"

或者,如果你想要可以使用任何文件扩展名(而不仅仅是.xlsx)的东西:

 string fileName = fileDialog.FileName;
 string newFilename = System.IO.Path.GetFileNameWithoutExtension(fileName) + 
         machineInfo.HostName + DateTime.Now.ToString("yyyy-MM-dd") + 
         System.IO.Path.GetExtension(fileName);

Path类在处理文件和目录时有很多非常有用的方法。

我真的建议阅读MSDNs字符串方法文档。

string filename = fileDialog.FileName;
string newFilename;
int fileExtensionIndex = filename.LastIndexOf(".xlsx")
newFilename = filename.Insert(fileExtensionIndex
                             ,"_" + machineInfo.HostName + "_" + DateTime.Now.ToString("yyyy-MM-dd"))
using (FileStream outputfile = new FileStream(newFileName, FileMode.Create))
{
    package.SaveAs(outputfile);
}