Создать имя для Excel в c # - PullRequest
       1

Создать имя для Excel в c #

0 голосов
/ 08 апреля 2019

У меня есть шаблон в Excel, с помощью которого я создаю отчеты из моего приложения.

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

У меня есть этот код, чтобы открыть шаблон

Excel.Application app = new Excel.Application();
    Excel._Workbook book;
    Excel._Worksheet sheet;
    libro = app.Workbooks.Open(@"path", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

С этим я сохраняю и генерирую имя со счетчиком в 0

string paths= @"path";
            string name= "Report_.xlsx";
            while (File.Exists(System.IO.Path.Combine(paths, name)))
            {

                int i = 1;

                name= string.Format("Report_{0}.xlsx",i);


            }
            string fullpath = Path.Combine(paths, name);
            book.SaveAs(fullpath, Excel.XlFileFormat.xlOpenXMLWorkbook, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);

            book.Close(0);
            app.Quit();

Проблема в том, что я могу создать только два отчета, но затем я пытаюсь создать стороннюю версию, и приложение застревает, и я не получаю никаких исключений, оно только застревает, но только когда я пытаюсь сгенерировать третий документ

Ответы [ 2 ]

2 голосов
/ 08 апреля 2019

Вы не увеличиваете переменную "i".Вы должны объявить его вне цикла while, а затем увеличить перед использованием:

string paths= @"path";
            string name= "Report_.xlsx";
            int i = 0;
            while (File.Exists(System.IO.Path.Combine(paths, name)))
            {

                  i++;

                name= string.Format("Report_{0}.xlsx",i);


            }
            string fullpath = Path.Combine(paths, name);
            book.SaveAs(fullpath, Excel.XlFileFormat.xlOpenXMLWorkbook, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);

            book.Close(0);
            app.Quit();
0 голосов
/ 08 апреля 2019

Переместить инициализацию переменной счетчика за пределы цикла

string paths= @"path";
            string name= "Report_.xlsx";
            int i = 1;
            while (File.Exists(System.IO.Path.Combine(paths, name)))
            {   
                name= string.Format("Report_{0}.xlsx",i);

                i++;
            }
            string fullpath = Path.Combine(paths, name);
            book.SaveAs(fullpath, Excel.XlFileFormat.xlOpenXMLWorkbook, Missing.Value, Missing.Value, false, false, Excel.XlSaveAsAccessMode.xlNoChange, Excel.XlSaveConflictResolution.xlUserResolution, true, Missing.Value, Missing.Value, Missing.Value);

            book.Close(0);
            app.Quit();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...