2013-09-04 2 views
0

У меня есть код, который преобразует файл .CSV в файл .XLSX. Преобразование идет хорошо, но метод WorkBook.SaveAs (@ "file.xslx"), похоже, сохраняет файл только в C: \ Users [MyName] \ Documents \ file.xlsx. Когда я использую Excel.Application.GetSaveAsFileName(), он по умолчанию использует C: \ Users [MyName] \ Documents with A Save As.Как установить каталог для Excel.WorkBook.SaveAs()?

Кроме того, установка Excel.Application.DefaultFilePath, кажется, не поможет, если я явно не оговорен F: .........

У меня есть относительный набор рабочего каталога, где a.csv является читать:

using Excel = Microsoft.Office.Interop.Excel; 


     StreamReader a = new StreamReader(@"a.csv"); 
     var CSVContent = new List<string[]>(); 
     Excel.Application excel = new Excel.Application(); 
     excel.DefaultFilePath = @"Output\"; //doesn't do anything 
     Excel.Workbook workBook = excel.Workbooks.Add(); 
     Excel.Worksheet sheet = workBook.ActiveSheet; 

     while (!a.EndOfStream) 
     { 
      string read = a.ReadLine(); 
      CSVContent.Add(read.Split(',')); 
     } 

     for (int i = 0; i < CSVContent.Count; i++) //write List contents to xlsx Line by Line 
     { 
      string[] csvLine = CSVContent[i]; 
      for (int j = 0; j < csvLine.Length; j++) 
      { 
       sheet.Cells[i + 1, j + 1] = csvLine[j]; //Cells begin at 1 in Excel 
      } 
     } 

     var b = excel.GetSaveAsFilename("a.xlsx"); 

     workBook.SaveAs(b); 
     workBook.Close(); 

Как получить workbook.SaveAs() для сохранения в относительном рабочем каталоге решения?

ответ

1

Опора на относительные пути имеет тенденцию быть проблематичной. Если вы хотите сохранить его в текущем каталоге приложения, используйте Environment.CurrentDirectory, то есть:

var b = Environment.CurrentDirectory + @"\a.xlsx"; 
Смежные вопросы