在附加字符串时难以保存模板
本文关键字:保存 字符串 | 更新日期: 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);
}