Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows c中打开Excel时,使用文件名ref而不是路径(字符串)#_C#_Excel_Ms Word_Ref - Fatal编程技术网

C# 在Windows c中打开Excel时,使用文件名ref而不是路径(字符串)#

C# 在Windows c中打开Excel时,使用文件名ref而不是路径(字符串)#,c#,excel,ms-word,ref,C#,Excel,Ms Word,Ref,在C#中打开或保存Excel时,我需要传递文件名ref,而不是提供字符串(完整路径)。下面是一段代码片段 object fileName = (string)e.Argument; object oMissing = System.Reflection.Missing.Value; if (fileName.ToString().EndsWith("xlsx")) { Excel.Workbook wb; object oMissing1 = Type.Missing;

在C#中打开或保存Excel时,我需要传递文件名ref,而不是提供字符串(完整路径)。下面是一段代码片段

object fileName = (string)e.Argument;

object oMissing = System.Reflection.Missing.Value;

if (fileName.ToString().EndsWith("xlsx"))
{
    Excel.Workbook wb;
    object oMissing1 = Type.Missing;
    var app = new Microsoft.Office.Interop.Excel.Application();
    wb = app.Workbooks.Open(@"C:\Users\273714\Desktop\ProoferReport1.xlsx", 
                            oMissing1, oMissing1, oMissing1, oMissing1, 
                            oMissing1, oMissing1, oMissing1, oMissing1, 
                            oMissing1, oMissing1, oMissing1, oMissing1, 
                            oMissing1, oMissing1);
    wb.SaveAs(@"C:\Users\273714\Desktop\Proofer Report2.xls", 
                            Excel.XlFileFormat.xlExcel8, Type.Missing, 
                            Type.Missing, Type.Missing, Type.Missing, 
                            Excel.XlSaveAsAccessMode.xlExclusive, 
                            Type.Missing, Type.Missing, Type.Missing, 
                            Type.Missing, Type.Missing);
    app.Quit();
    app.Quit();
}
如果是word文档,我可以像这样打开它

oDoc = oWord.Documents.Open(ref fileName, ref oMissing,
               ref readOnly, ref oMissing, ref oMissing, ref oMissing,
               ref oMissing, ref oMissing, ref oMissing, ref oMissing,
               ref oMissing, ref isVisible, ref oMissing, ref oMissing,
               ref oMissing, ref oMissing);

我也需要用同样的方法在Excel中使用文件名。任何帮助都将不胜感激。

如果我理解正确,您只想传递变量FileName,而不是传递常量字符串“c:\aFilename.xlsx”

为此,请将
对象文件名
替换为
字符串文件名
,然后键入
ref filename
,而不是
ref@“c:\aFilename.xlsx”


还要注意
System.IO.FileInfo
类-不要执行
fileName.ToString().EndsWith(“xlsx”)
您可以执行
Path.GetExtension(fileName).Equals(“xlsx”,StringComparison.invariantCultureInogoreCase)
来利用内置函数查找文件扩展名(例如,这也可以避免)filename.abcxlsx将无法通过测试)。

不确定您的问题的确切含义。您想使用pass
filename.xlsx
而不是
C:\filename.xlsx
?我想在浏览文件并打开该文件时,在那里传递对象文件名而不是字符串。文件名不断更改。我不想硬编码您在
文件名
对象中有文件的完整路径吗?因此,只需使用“文件打开”对话框,让用户选择文件,检查文件是否正确,然后显示“另存为”对话框供用户再次保存……我感到困惑。。为什么不能只使用
fileName
变量?(或者只是
File.Copy
Path.GetExtension(fileName)
是一个更好的选择(虽然我不知道这个问题到底是什么,如果这个问题回答了这个问题)Good point@Sayse-我使用了
System.IO.FileInfo
,因为最初我把文件名放在那里,然后意识到,因为它是作为ref传递的,所以最好将它存储在一个字符串变量中,这样就可以返回一个值,但此时停止思考。现在更新答案。谢谢