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

时间:2014-10-29 15:00:44

标签: c# excel file-io

我尝试加载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"。

2 个答案:

答案 0 :(得分:2)

我真的建议您阅读MSDNs String Methods文档。

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

答案 1 :(得分:2)

使用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类有许多非常有用的方法。