Witam,
Na miałem obecnie zadanie stworzyć program który będzie scalał pliki txt w jedną całość. Mniej więcej mi wyszło, jednak jak się teraz okazuje wygenerowany scalony plik txt nie ma odpowiedniego kodowania 65001 unicode UTF8, które jest potrzebne aby dane z tego pliku zostały poprawnie zinterpretowane przez Excela. Excel interpretuje to jako kodowanie 28592 środkowo-europejski ISO.
private void scalanie()
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int nCount = 0; nCount < CorrectFileList.Length; nCount++)
{
sb.AppendLine(System.IO.File.ReadAllText(CorrectFileList[nCount], System.Text.Encoding.UTF8));
}
string output = sb.ToString();
File.WriteAllText(name, output, System.Text.Encoding.UTF8);
string word = "<";
progressBar1.Minimum = 0;
progressBar1.Maximum = CorrectFileList.Length - 1;
//Szukanie znaku < i usuwanie wierszy
for (int i = 0; i < CorrectFileList.Length; i++)
{
szukanie(word, i);
}
MessageBox.Show("Utworzono plik " + name, "Raport Maker");
progressBar1.Value = 0;
czynadpisac = false;
}
private void szukanie(string word, int i)
{
//Wyświetlanie procentowego postępu progress bar
progressBar1.Value = i;
int percent = (int)(((double)progressBar1.Value / (double)progressBar1.Maximum) * 100);
progressBar1.CreateGraphics().DrawString("Postęp: " + percent.ToString() + "%", new System.Drawing.Font("Arial", (float)8.25, System.Drawing.FontStyle.Regular), System.Drawing.Brushes.Black, new System.Drawing.PointF(progressBar1.Width / 2 - 30, progressBar1.Height / 2 - 7));
//Analizowanie scalonego pliku w celu usuwania wierszy
TextReader tr = new StreamReader(name);
string poczytane = tr.ReadToEnd();
tr.Close();
TextWriter tw1 = new StreamWriter(name);
if (poczytane.Contains(word))
{
int a = poczytane.IndexOf(word);
string nowy;
if (a == 0) nowy = poczytane.Remove(a, 41);
else nowy = poczytane.Remove(a - 4, 42 + 110);
tw1.Write(nowy);
}
tw1.Close();
progressBar1.Refresh();
}
Jest może ktoś w stanie powiedzieć mi co musiałbym zmienić aby program wygenerował plik txt w danym formacie? Dodam że przy poprzedniej wersji tego programu, którą robiłem na laptopie z praktyk, program generował plik w dobrym formacie, ale wtedy był mniejszy zakres usuwania znaków we wierszu
else nowy = poczytane.Remove(a - 4, 42 + 110);
A taki zakres już poprawiłem na swoim własnym laptopie.