2013-09-05 2 views
-1

Мне нужно будет передать имя файла ref вместо указания строки (полный путь) при открытии или сохранении Excel на C#. Ниже приведен фрагмент кодаиспользовать имя файла ref вместо пути (строки) при открытии Excel в Windows C#

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

В случае текстового документа я могу просто открыть его как

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 тоже. Любая помощь будет благодарна.

+0

Не знаете, что именно означает ваш вопрос. Вы хотите использовать pass 'filename.xlsx' вместо' C: \ filename.xlsx'? – CodingIntrigue

+0

Я хочу передать имя файла объекта там вместо строки, когда я просматриваю файл и открываю его. имя файла продолжает меняться. Не хотите ли жестко указать его – user1665707

+0

у вас есть полный путь к файлу в 'fileName'? – Damith

ответ

0

Если я правильно понял, вы просто хотите передать переменную FileName вместо передачи постоянной строки «c: \ aFilename.xlsx»?

Для этого заменить object filename на string filename, а затем введите ref filename вместо ref @"c:\aFilename.xlsx".

быть также известно о System.IO.FileInfo класса - вместо того, чтобы делать fileName.ToString().EndsWith("xlsx") вы могли бы сделать Path.GetExtension(filename).Equals("xlsx",StringComparison.InvariantCultureIgnoreCase) воспользоваться встроенной функции для нахождения расширений файлов (это также позволяет избежать (например) filename.abcxlsx от прохождения теста).

+1

' Path.GetExtension (имя_файла) 'является лучшей альтернативой (хотя я не знаю, что вопрос на самом деле должен сказать, если это ответит на вопрос) – Sayse

+0

Хорошая точка @Sayse - d использовал 'System.IO.FileInfo' с тех пор, как я начал задерживать там имя файла, а затем понял, что, поскольку он передается как ref, было бы лучше сохранить его в строковой переменной, чтобы можно было вернуть значение, но перестало думать в таком случае. Обновление ответа сейчас. Благодарю. – JohnLBevan