Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
1

Не работает приложение на других пк

02.09.2016, 11:20. Просмотров 222. Ответов 10
Метки нет (Все метки)

Здраствуйте. Собственно вопрос в теме. При запуске на других пк ошибок нет. Просто не выполняется код.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
static void Main(string[] args)
        {
            string filePath = Application.StartupPath.ToString();
            var files = Directory.EnumerateFiles(filePath, "*.*", SearchOption.AllDirectories)
                        .Where(s => s.EndsWith(".xls") || s.EndsWith(".xlsx") 
                        && (s.Contains("DMT_") || s.Contains("DMP_"))).ToList();
            foreach (string fileExcel in files)
            {
                FileStream stream = File.Open(fileExcel, FileMode.Open, FileAccess.ReadWrite, FileShare.None);
                IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                //DataSet - The result of each spreadsheet will be created in the result.Tables
                DataSet result = excelReader.AsDataSet();
 
                //освобождение ресурсов (IExcelDataReader is IDisposable)
                excelReader.Close();
 
                for (int i = 0; i < result.Tables.Count; i++)
                {
                    DataTable dt = result.Tables[i];
                    string oPuth = filePath + @"" + fileExcel.Remove(0, fileExcel.LastIndexOf(@"") + 1);
                    string OutputPath = oPuth.Remove(oPuth.IndexOf('.')) + ".txt";
                    StreamWriter sw = File.CreateText(OutputPath);
 
                    for (int j = 0; j < dt.Rows.Count; j++)
                    {
                        string rowstr = string.Empty;
                        for (int k = 0; k < dt.Columns.Count; k++)
                        {
                            rowstr += (dt.Rows[j][k] + "|");
                        }
                        rowstr = rowstr.Substring(0, rowstr.Length - 1);
                        sw.WriteLine(rowstr);
                    }
                    sw.Flush();
                    sw.Close();
                }
            }
        }

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Миниатюры
Не работает приложение на других пк  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 11:20
Ответы с готовыми решениями:

Приложение не запускается из сетевой папки на других ПК, если запущено на каком-то конкретном
Есть программа на c#. В ней показываются отчеты, созданные в FastReport....

Сборка не работает на других машинах (Dll для использования в MSOffice)
Добрый день! Сделал Dll для использования в MSOffice, собрал: на той машине,...

Приложение с бд sqlite не запускается на других win 8
Есть приложение, где используется библиотека sqlite, добавленна в References ...

Как сделать так, чтобы C# приложение запускалось с диска / флешки на других компьютерах
Здравствуйте, я начинающий программист. В данный момент создаю C# приложение с...

Как добавлять и удалять записи из БД и будет ли это приложение (будильник) работать на других ПК
Доброго времени суток! Помогите новичку разобраться. Стоит задача: написать...

10
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 11:52  [ТС] 2
Библиотеки перекинул вместе с приложением

Добавлено через 30 минут
Сделал логи. Считывание xlsx происходит. не сохраняет в файл txt.
C#
1
sw.WriteLine(rowstr);
0
Rius
Эксперт .NET
5127 / 3349 / 818
Регистрация: 25.05.2015
Сообщений: 10,285
Записей в блоге: 11
Завершенные тесты: 4
02.09.2016, 12:00 3
StartupPath.ToString(); - бесполезно
@"" - тоже
Remove(oPuth.IndexOf('.') - туда же

Для потоков используйте using(){}. Для работы с путями - методы классов Path и FileInfo.

Добавлено через 1 минуту
На каждом этапе выводите состояние переменных в консоль.
1
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 12:18  [ТС] 4
Спасибо. Щас попробую

Добавлено через 11 минут
C#
1
File.WriteAllText("progress.txt", "работает")
- Так все работает.
C#
1
2
3
4
StreamWriter sw = File.CreateText(OutputPath);
sw.WriteLine(rowstr);
sw.Flush();
sw.Close();
- а вот так нет.
Не пойму что за фигня. Пробовал .exe запускать от имени админа. Не помогает. На втором ПК работает только WriteAllText.
0
Rius
Эксперт .NET
5127 / 3349 / 818
Регистрация: 25.05.2015
Сообщений: 10,285
Записей в блоге: 11
Завершенные тесты: 4
02.09.2016, 12:26 5
Оберните всё в
C#
1
2
3
4
5
6
7
8
9
try
{
  //... Код здесь
}
catch (Exception e)
{
  Console.WriteLine(e.Message);
  Console.WriteLine(e.StackTrace);
}
Добавлено через 51 секунду
Запускайте из консоли (cmd.exe), чтобы окно не закрылось сразу после завершения.
0
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 12:38  [ТС] 6
в блок cath не заходит. вот скрин с другого пк.
C#
1
Console.WriteLine(rowstr);
В консоле выводит что будет записано. Но по факту
C#
1
sw.WriteLine(rowstr);
ничего не записывает.
0
Миниатюры
Не работает приложение на других пк  
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 12:39  [ТС] 7
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
try
            {
                foreach (string fileExcel in files)
                {
                    FileStream stream = File.Open(fileExcel, FileMode.Open, FileAccess.Read, FileShare.None);
                    IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
                    //DataSet - The result of each spreadsheet will be created in the result.Tables
                    DataSet result = excelReader.AsDataSet();
 
                    //освобождение ресурсов (IExcelDataReader is IDisposable)
                    excelReader.Close();
 
                    for (int i = 0; i < result.Tables.Count; i++)
                    {
                        DataTable dt = result.Tables[i];
                        string oPuth = filePath + @"" + fileExcel.Remove(0, fileExcel.LastIndexOf(@"") + 1);
                        string OutputPath = oPuth.Remove(oPuth.IndexOf('.')) + ".txt";
                        StreamWriter sw = File.CreateText(OutputPath);
 
                        for (int j = 0; j < dt.Rows.Count; j++)
                        {
                            string rowstr = string.Empty;
                            for (int k = 0; k < dt.Columns.Count; k++)
                            {
                                rowstr += (dt.Rows[j][k] + "|");
                            }
                            rowstr = rowstr.Substring(0, rowstr.Length - 1);
                            Console.WriteLine(rowstr);
                            sw.WriteLine(rowstr);
                        }
                        sw.Flush();
                        sw.Close();
                        Console.ReadLine();
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
                Console.ReadLine();
            }
0
Rius
Эксперт .NET
5127 / 3349 / 818
Регистрация: 25.05.2015
Сообщений: 10,285
Записей в блоге: 11
Завершенные тесты: 4
02.09.2016, 12:40 8
Между 17 и 18 строками вставьте
C#
1
Console.WriteLine(OutputPath);
0
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 12:57  [ТС] 9
Вот скрин работы. Оно создало файл в левом месте с другим названием..
Вот откуда запускался .exe - D:\Users\Evgeniy.Naidiuk\Desktop\Програмка\xls to txt\xls to txt\
0
Миниатюры
Не работает приложение на других пк  
Rius
Эксперт .NET
5127 / 3349 / 818
Регистрация: 25.05.2015
Сообщений: 10,285
Записей в блоге: 11
Завершенные тесты: 4
02.09.2016, 13:02 10
Это не оно в левом месте , это Вы путь формируете так.
См рекомендации выше.
1
Denis91
32 / 32 / 4
Регистрация: 01.07.2013
Сообщений: 230
02.09.2016, 13:05  [ТС] 11
Да. Точку "вырезал".
А на другом ПК путь был с точкой и оно наформатировало ерунды((
0
02.09.2016, 13:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2016, 13:05

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

Программа не работает на других ПК
Здравствуйте. Я написал интерфейс для работы с бд, созданную в MSSQL Server....

SqlConnection не работает на других компьютерах
Подключаюсь к бд через команду SqlConnection: string conect = @&quot;Data...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru