Гость
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заменить запись в файл с txt на xlsx / 25 сообщений из 150, страница 1 из 6
18.02.2021, 12:44
    #40046614
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Помогите сделать так чтобы запись происходила не в txt, а в Excel

Код: plaintext
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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
#include<iostream>
#include<conio.h>
#include<locale.h>
#include<math.h>
#include<time.h>
#include<cmath>
#include<fstream>
#include<string>
float tpostyp = 0;//random
float tobrk = 0;//random
float tobrevm = 0;//random
int k = 0;
int t0 = 0;
int emkost = 0;
float lambda = 0.1;
float Xi = 0;
bool KanalSvob = true;
float proizvoditelnost = 0;
float stoimost = 0;
float cena = 1;
float vsignala = 0.01;
float p = 0;

using namespace std;
float FuncPostuplenie_v_kanal_vrem(int regim)
{
	if (regim == 2)
	{
		return tpostyp = 10;
	}
	else
	{
		Xi = 2 + rand() % 6;
		tpostyp = 0.1 * pow(2.71, -0.1 * Xi);
		return tpostyp + 10.0;
	}
}
float FuncObrabotka_v_kanal_vrem(int regim)
{
	if (regim == 2)
	{
		return tobrk = 10;
	}
	else
	{

		Xi = 2 + rand() % 6;
		tobrk = 1 / 1.5 / sqrt(2 * 3.14) * pow(2.71, -(pow(Xi - 10, 2)) / 2 / pow(1.5, 2));
		return tobrk + 10.0;

	}
}
float FuncObrabotka_v_evm_vrem(int regim)
{
	if (regim == 2)
	{
		return tobrevm = 33;
	}
	else
	{
		Xi = 2 + rand() % 6;
		tobrevm = 1 / 3 / sqrt(2 * 3.14) * pow(2.71, -(pow(Xi - 33, 2)) / 2 / pow(3.0, 2));
		return tobrevm + 33.0;
	}
}
float FuncEmkost(int regim)
{
	if (regim == 2)
	{
		return emkost = 4;
	}
	else
	{
		return emkost = 2 + rand() % 6;
	}
}
/*int FuncCountElementinEVM(int *Mass,int N)
{
	int j=0;
	int min=0;
	min=Mass[0];
	for(j=1;j<N;j++)//проход по каждой эвм
	{
		if(Mass[j]<Mass[j-1])//ищем наименьший элемент в очереди эвм
		{
			min=Mass[j];
		}
	}
	return min;
}*/
int main()
{
	int N = 0;
	int reg = 0;
	int j = 0;
	int min = -1;
	int mindex = 0;
	string stroka = "";
	//int **Mass;
	setlocale(LC_ALL, "Russian");
	srand(time(NULL));
	ofstream f1;
	f1.open("log.txt", ios_base::trunc);
	if (f1)
	{
		cout << "Файл успешно открыт для записи в него статистики" << endl;
	}
	cout << "	Введите количество ЭВМ, участвующих в процессе = ";
	cin >> N;//столько будет массивов (очередей)
	f1 << "Всего ЭВМ " << N << endl;
	int* MassEVM = new int[N];
	for (int i = 0; i < N; i++)
	{
		MassEVM[i] = 0;//эвм без сигналов
	}
	int* EmkostEVM = new int[N];//массив емкостей эвм
	for (int i = 0; i < N; i++)
	{
		EmkostEVM[i] = 4;//инициализация
	}
	int* countSignalEVM = new int[N];//сколько сигналов обработала каждая эвм (для статистики)
	for (int i = 0; i < N; i++)
	{
		countSignalEVM[i] = 0;//инициализация
	}
	int countDestroySignal = 0;//сколько сигналов было уничтожено из - за смены емкости эвм
	int* SvobodnostEVM = new int[N];//состояние  емкостей эвм 0 -свободно, 1-работает
	for (int i = 0; i < N; i++)
	{
		SvobodnostEVM[i] = 0;//инициализация
	}
	int* TimerEVM = new int[N];//Таймер на каждой ЭВМ, отвечающий за обработку сигнала
	for (int i = 0; i < N; i++)
	{
		TimerEVM[i] = 0;//инициализация
	}

	int buffer = 10000;
	cout << "Введите режим работы генератора 1- случайно, 2 - постоянно" << endl;
	cin >> reg;
	//cout<<"что вернула функция "<<FuncObrabotka_v_kanal_vrem(reg);
	float time1 = 0;
	float time2 = 0;
	float time3 = 0;
	float tend1 = 0;
	float tend2 = 0;
	float* tend3 = new float[N];
	for (int i = 0; i < N; i++)
	{
		tend3[i] = 0;
	}
	bool flag = true;
	bool newsignal = false;
	bool flagkanal = true;
	int* flagevm = new int[N];
	for (int i = 0; i < N; i++)//0 - свободная, 1 - обрабатывает
	{
		flagevm[i] = 0;
	}
	//while сам процесс
	do
	{
		t0 = t0 + 1;

		if (KanalSvob == true)//проверка на свободность канала
		{
			if (flagkanal == true)
			{
				tend1 = t0 + (time1 = FuncPostuplenie_v_kanal_vrem(reg));
				flagkanal = false;
			}
			//if(t0<tend1)//поступение в канал
			//{
			KanalSvob = false;
			//f1<<"Прошло"<<t0<<" мск"<<"Канал"<<KanalSvob<< "Сигнал обрабатывается в канале и не поступал в ЭВМ"<<endl;
		//}
		}
		else
		{

			if (buffer != 0)//если в буфере есть место, заносим сигнал в него
			{

				buffer--;//буфер уменьшен на величину сигнала
			}
		}
		//начало обработки сигнала в канале
		if (KanalSvob == false)//значит в канале есть сигнал
		{
			if (flag == true)
			{
				tend2 = t0 + (time2 = FuncObrabotka_v_kanal_vrem(reg));
				flag = false;
			}

			if (t0 < tend2)
			{

				//идет обработка сигнала
			}
			else
			{

				k++;//увеличиваем счетчик количества обработанных сигналов на 1
				newsignal = true;
				f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Из канала вышел новый сигнал. Всего сигналов обработано в канале = " << k << endl;
				if (t0 >= tend1)
				{
					KanalSvob = true;
					flag = true;
					flagkanal = true;
					buffer++;//берем из буфера следующий необработанный сигнал и освобождаем место

				}
			}

		}
		//поступление в ЭВМ
		if ((k != 0) && (newsignal == true))
		{
			//min=FuncCountElementinEVM(MassEVM,N); //ищем ЭВМ с наименьшей занятостью
			min = MassEVM[0];
			mindex = 0;
			for (j = 1; j < N; j++)//проход по каждой эвм
			{
				if (MassEVM[j] < min)//ищем наименьший элемент в очереди эвм
				{
					min = MassEVM[j];///////!!!!!
					mindex = j;
				}

			}
			//cout<<"минимальный элемент равен"<<min;
			MassEVM[mindex] = MassEVM[mindex] + 1;//добавляем сигнал в очередь на обработку ЭВМ


			if (MassEVM[mindex] > 0)//если машина обрабатывает сигнал, то её емкость не меняем
			{
				SvobodnostEVM[mindex] = 1;
				time3 = FuncObrabotka_v_evm_vrem(reg);
				TimerEVM[mindex] = time3;//Заводим таймер для выбранной ЭВМ
			}
		}
		//сама обработка
		for (int j = 0; j < N; j++)
		{
			if ((flagevm[j] == 0) && (newsignal == true))
			{
				tend3[j] = t0 + TimerEVM[j];
				flagevm[j] = 1;
				newsignal = false;
			}
			if (t0 <= tend3[j])
			{
				//сигнал еще обрабатывается
				f1 << "Прошло " << t0 << " мск" << "Канал " << KanalSvob << " Сигнал обрабатывается в " << j + 1 << " ЭВМ" << endl;
				for (int index = 0; index < N; index++)
				{
					if (SvobodnostEVM[index] == 0)//если ЭВМ не работает, то изменяем её емкость
					{
						EmkostEVM[index] = FuncEmkost(reg);
						countDestroySignal = countDestroySignal + MassEVM[index];
						MassEVM[index] = 0;//очищаем очередь ЭВМ, т.к была изменена её ёмкость
					}
				}
			}
			else
			{
				for (int index3 = 0; index3 < N; index3++)//SvobodnostEVM[j]=0;
				{
					if ((t0 > tend3[index3]) && (tend3[index3] > 0) && (SvobodnostEVM[index3] == 1))//вм закончила обработку
					{
						if (flagevm[index3] == 1)
						{
							SvobodnostEVM[index3] = 0;
							countSignalEVM[index3] = countSignalEVM[index3] + 1;//увеличиваем счетчик количесва обработанных ЭВМ сигналов
							f1 << "Прошло " << t0 << " мск" << "Сигнал обработался в " << index3 + 1 << " ЭВМ" << endl;
							TimerEVM[index3] = 0;//обнуляем таймер ЭВМ, которая закончила свою работу
							flagevm[index3] = 0;
						}
					}

				}
			}
		}
		if (min == -1)
		{
			f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Сигнал обрабатывается в канале и не поступал в ЭВМ" << endl;
		}
		else
		{
			//f1<<"Прошло "<<t0<<" мск"<<"Канал"<<KanalSvob<< "Сигнал обрабатывается в"<<min<<" ЭВМ"<<endl;
		}
	} while ((k < 1000) && (buffer != 0));//k=1000
	cout << "Запись в файл завершена" << endl;
	int signalovobr = 0;
	f1 << "Прошло " << t0 << " мск " << " Канал " << KanalSvob << " Обработка завершена. Обработано сигналов каждой ЭВМ:" << endl;
	for (int index = 0; index < N; index++)
	{
		f1 << "ЭВМ № " << index + 1 << " " << countSignalEVM[index] << endl;
		signalovobr = signalovobr + countSignalEVM[index];
	}

	f1 << "В результате изменения емкости ЭВМ было уничтожено " << countDestroySignal << " сигналов" << endl;
	proizvoditelnost = float(k) / float(t0);
	stoimost = signalovobr * cena;
	p = emkost / vsignala / k;
	f1 << "Производительность системы = " << proizvoditelnost << " сигналов / мск " << endl;
	f1 << "Стоимость обработки сигналов  в ЭВМ = " << stoimost << " руб." << endl;
	f1 << "Вероятность переполнения накопителя = " << p << endl;
	f1.close();
	system("Pause");
	//delete MassEVM;
	//delete SvobodnostEVM;
	//delete TimerEVM;
	//delete countSignalEVM;
}

...
Рейтинг: 0 / 0
18.02.2021, 12:50
    #40046623
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
В простейшем случае ты можешь переименовать расширение в СSV

Код: plaintext
1.
f1.open("log.csv", ios_base::trunc);



И логфайл привести к табличному виду с разделителями например ";".

И это Excel должен открыть как табличку.
...
Рейтинг: 0 / 0
18.02.2021, 12:52
    #40046625
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
*.xslx это xml в zip-архиве. Пишешь в xml, затем пакуешь.
Структура xml тут описана .
...
Рейтинг: 0 / 0
18.02.2021, 12:52
    #40046626
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
xamelione25f1.open("log.txt", ios_base::trunc);
Вот в этой строчке надо ".txt" заменить на ".xlsx".

Ну или читать спецификацию xlsx и переделывать весь вывод согласно ней.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.02.2021, 12:56
    #40046627
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Dimitry Sibiryakov,

Dima T,

mayton

гляньте тут, я там писал более подробнее о проблеме с которой я столкнулся
Модератор: Нет. Мы не будем ходить в другие форумы. Это - модераторский совет.
...
Рейтинг: 0 / 0
18.02.2021, 13:21
    #40046638
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
xamelione25,

Записывай всё в tsv и не делай себе голову. \t - разделитель полей, \n - строк. Табы в строках меняй на что-нибудь.
...
Рейтинг: 0 / 0
18.02.2021, 13:29
    #40046643
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
crutchmaster, Dimitry Sibiryakov, mayton,

да я уже с csv все решил ... спс))

единственное подскажите как сделать по конечным границам заполненных ячеек в икселе ... по окончанию записи в него ... в csv формате ... выделение всех границ ячеек входящих в этот диапазон

ну например вот так
...
Рейтинг: 0 / 0
18.02.2021, 14:17
    #40046677
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
xamelione25,
В коде надо?
- вкл записи макроса
- выделить
- посмотреть полученный код макроса.
...
Рейтинг: 0 / 0
18.02.2021, 14:31
    #40046689
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
crutchmaster
xamelione25,

Записывай всё в tsv и не делай себе голову. \t - разделитель полей, \n - строк. Табы в строках меняй на что-нибудь.

Никогда не понимал этот формат. Табы на просмотре текста выглядят ужасно. Сложно
понять - где пробел в данных а где разделитель. Чтоб трабл-шутить нужно смотреть
вооруженным глазом через hex-editor или среду с подсветкой управляющих символов.
...
Рейтинг: 0 / 0
18.02.2021, 14:37
    #40046693
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
maytonТабы на просмотре текста выглядят ужасно.

Отлично выглядит если
1) Данные примерно одинаковой длины;
2) Длина не близка в кратности таба.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.02.2021, 14:39
    #40046695
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
crutchmaster
xamelione25,

Записывай всё в tsv и не делай себе голову. \t - разделитель полей, \n - строк. Табы в строках меняй на что-нибудь.

Никогда не понимал этот формат. Табы на просмотре текста выглядят ужасно. Сложно
понять - где пробел в данных а где разделитель. Чтоб трабл-шутить нужно смотреть
вооруженным глазом через hex-editor или среду с подсветкой управляющих символов.

Не надо фигней заниматься, открыл в экселе и смотри. CSV намного хуже, где разделитель сам печатный символ, который может содержаться в данных.
...
Рейтинг: 0 / 0
18.02.2021, 14:43
    #40046698
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Вот за что люблю наш форум... Архитекторы сцепились за сплиттер.
...
Рейтинг: 0 / 0
18.02.2021, 17:33
    #40046801
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
По сабжу. Если сплиттер == запятая, все нормально экранируется кавычками. И сами кавычки тоже.

Код: plaintext
1.
2.
3.
4.
"Timestamp,Message"
2021-02-18T16:31:14.417069,"Fucken comma ',' in value"
2021-02-18T16:31:14.4260667,Fucken tab 	 in value
2021-02-18T16:31:14.4260667,"Fucken ""quoted literal"" in value"



Ну а табулятор - невидимка. Вот такие дела.
...
Рейтинг: 0 / 0
18.02.2021, 19:20
    #40046847
PetroNotC Sharp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton,

>Ну а табулятор - невидимка. Вот такие дела.
Та мы туда и не смотрим)))
...
Рейтинг: 0 / 0
18.02.2021, 21:09
    #40046887
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
Вот за что люблю наш форум... Архитекторы сцепились за сплиттер.

Ты теоретик, а мы практики, нае... с этим
...
Рейтинг: 0 / 0
18.02.2021, 21:17
    #40046890
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Вы, практики наверное ничего больше 1 Гига в CSV не грузили в БД.

А я - грузил. И в Excel такой файл не открывался. Вот такие пироги.
...
Рейтинг: 0 / 0
18.02.2021, 21:28
    #40046894
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
Вы, практики наверное ничего больше 1 Гига в CSV не грузили в БД.

А я - грузил. И в Excel такой файл не открывался. Вот такие пироги.

Ты же не админ, код писать умеешь, зачем тут эксель вообще непонятно.

У меня трижды в день качается 6-8 Гб, превращаю в БД размером 2 Гб, на все 40 минут уходит.
...
Рейтинг: 0 / 0
18.02.2021, 21:38
    #40046896
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Хм.... 8 Гигабайт за 40 минут. Это приблизительно 204 Мб в минуту или 3.4 Мб в секунду.

Медленно-ва-то... Для современных носителей и сетей. Хотя чорт его знает. Вангую что I/O небыстрый.
...
Рейтинг: 0 / 0
18.02.2021, 21:40
    #40046897
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
xamelione25,

автор ну что? У тебя получилось CSV открыть в Excel?
...
Рейтинг: 0 / 0
18.02.2021, 21:41
    #40046898
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
Вангую что I/O небыстрый.

Небыстрый FoxPro, на котором все написано. Но производительность всех устраивает
...
Рейтинг: 0 / 0
18.02.2021, 21:43
    #40046899
xamelione25
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton,
да, открылся...
...
Рейтинг: 0 / 0
18.02.2021, 21:44
    #40046901
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
Фокс - хорошая штука. Уважаю. У них интересный тип индекса был. Какой-то там rush.
И на сравнительных тестах если сравнивать dBase vs Fox, то последний выигрывал когда
были запросы специфичны к этому рашу. Интересно Microsoft перенёс это ноу-хау в MS-SQL?

Кто есть MS-SQL-щики? Проясните plz.
...
Рейтинг: 0 / 0
18.02.2021, 21:46
    #40046902
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
У них интересный тип индекса был. Какой-то там rush.

Без детализации.
Имхо, маркетинговый шит.
...
Рейтинг: 0 / 0
18.02.2021, 22:11
    #40046909
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
mayton
Фокс - хорошая штука. Уважаю. У них интересный тип индекса был. Какой-то там rush.
И на сравнительных тестах если сравнивать dBase vs Fox, то последний выигрывал когда
были запросы специфичны к этому рашу. Интересно Microsoft перенёс это ноу-хау в MS-SQL?
Кто есть MS-SQL-щики? Проясните plz.
Технология Rushmore. То ли сжатые индексы, то ли bitmap (не помню). Подробности тут , искать слово Rushmore.
...
Рейтинг: 0 / 0
18.02.2021, 22:20
    #40046910
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Заменить запись в файл с txt на xlsx
А.. точно.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Заменить запись в файл с txt на xlsx / 25 сообщений из 150, страница 1 из 6
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]