C#, выполняемый через оболочку из VBA, не создает файл
Предыстория: я получил огромную стену sql-кода из программы, которую я хочу использовать для сброса данных в excel. Выполнение этого кода из VBA приводит к большому количеству ошибок, и кусок кода слишком велик и запутан, чтобы пройти через него.
Запуск запроса на C# работает нормально, поэтому я написал программу, которая захватывает данные и сбрасывает их в файл, который я называю excelDump. csv
Для удобства использования, чтобы избежать необходимости запускать эту программу отдельно, я вызываю программу через макрос vba. Как только программа выполнена, я хватаю (в vba) данные в dumb и заполняю свой лист excel.
Вызывается программа c#, консоль показывает все, что я хочу, она закрывается с правильным кодом выхода, и я подтверждаю этот код в VBA, прежде чем пытаться открыть дамп.
Вот код, который я запускаю в C#
public void DumpToExcel() { using (System.IO.StreamWriter fs = new System.IO.StreamWriter("excelDump.csv")) { // Loop through the fields and add headers for (int i = 0; i < myReader.FieldCount; i++) { string name = myReader.GetName(i); if (name.Contains(",")) name = "\"" + name + "\""; fs.Write(name + ","); } fs.WriteLine(); // Loop through the rows and output the data while (myReader.Read()) { for (int i = 0; i < myReader.FieldCount; i++) { string value = myReader[i].ToString(); if (value.Contains(",")) value = "\"" + value + "\""; fs.Write(value + ","); } fs.WriteLine(); } fs.Close(); } }
Что я уже пробовал:
Сначала я подумал, что проблема в том, что программа не может перезаписать файл, поэтому я попытался удалить его, но не смог. Программа отлично работает, когда я запускаю ее из visual studio или выпускаю сборку из exe. Но вызов его из оболочки не создает новый файл. Использовать файл.удалить можно удалить старый просто отлично.
Я подумал, что, может быть, программа c# быстро завершает работу до того, как файлы будут созданы, но я ждал, прежде чем импортировать данные, и все равно ничего.
Bernhard Hiller
Что такое "myReader"? Пытается ли он прочитать файл Excel, содержащий макрос?
Member 11683251
OdbcDataReader myReader;
Он запускает SQL-запрос. Эти программы захватывают данные из sql и дампов в excel. Другой excel импортирует эти данные в себя. Я вызываю эту программу из программы импорта excel через оболочку.
Bernhard Hiller
Что происходит, когда вы заменяете "excelDump. csv" на полный путь (например, "c:\\temp\\excelDump.csv")? Возможно, возникла проблема с "текущим рабочим каталогом".
Member 11683251
Это, кажется, работает, файлы были созданы, и в них есть правильные данные.
Большое спасибо! Опубликуйте это как ответ, и я приму его. :)