Moin Leute also mein Programm funktioniert einband frei
Wollte nur mal fragen ob man den Code Kürzer schreiben kann oder ob ich es auch einfach zu schwer mir selber gemacht hab
Zum Programm ich lese aus einer Excel Tabelle Pro tag immer 3 Spalten das heißt wenn der Aktuelle Monat 5 tage hat lese ich 15 cellen aus einer Reihe aus und wenn das fertig ist dann lese ich die nächste reihe aus
Es geht für mich auch nur hauptsächlich um die Funktion :
Spoiler anzeigen
ich hab das eine in den text nur bis tag 6 als test gemacht
Wollte nur mal fragen ob man den Code Kürzer schreiben kann oder ob ich es auch einfach zu schwer mir selber gemacht hab
Zum Programm ich lese aus einer Excel Tabelle Pro tag immer 3 Spalten das heißt wenn der Aktuelle Monat 5 tage hat lese ich 15 cellen aus einer Reihe aus und wenn das fertig ist dann lese ich die nächste reihe aus
Es geht für mich auch nur hauptsächlich um die Funktion :
C#-Quellcode
- public partial class MainWindow : System.Windows.Window
- {
- //Pfad von der Excel Datei
- public string excelpath = @"C:\Users\tb\Desktop\excelvs\test.xlsx";
- public string excelpathcopy = @"C:\Users\tb\Desktop\excelvs\test2222.xlsx";
- public List<Double> row1 = new List<Double>();
- public List<Double> row2 = new List<Double>();
- public MainWindow()
- {
- InitializeComponent();
- Task<bool> task = ReadVariabletest();
- startdatum();
- }
- //start timer für Aktuellen Tag anzeigen
- private void startdatum()
- {
- DispatcherTimer timer = new DispatcherTimer();
- timer.Interval = TimeSpan.FromSeconds(1);
- timer.Tick += datenow24oee;
- timer.Start();
- }
- private void datenow24oee(object sender, EventArgs e )
- {
- int actuallyday = DateTime.Now.Day;
- for (int i = 1; i <= actuallyday; i++)
- {
- if (i== 1)
- {
- e1.Text = row1[0].ToString("P0");
- e2.Text = row1[1].ToString("P0");
- e3.Text = row1[2].ToString("P0");
- e1_Copy.Text = row2[0].ToString("P0");
- e2_Copy.Text = row2[1].ToString("P0");
- e3_Copy.Text = row2[2].ToString("P0");
- }
- else if (i == 2)
- {
- e4.Text = row1[3].ToString("P0");
- e5.Text = row1[4].ToString("P0");
- e6.Text = row1[5].ToString("P0");
- e4_Copy.Text = row2[3].ToString("P0");
- e5_Copy.Text = row2[4].ToString("P0");
- e6_Copy.Text = row2[5].ToString("P0");
- }
- else if (i == 3)
- {
- e7.Text = row1[6].ToString("P0");
- e8.Text = row1[7].ToString("P0");
- e9.Text = row1[8].ToString("P0");
- e7_Copy.Text = row2[6].ToString("P0");
- e8_Copy.Text = row2[7].ToString("P0");
- e9_Copy.Text = row2[8].ToString("P0");
- }
- else if (i == 4)
- {
- e10.Text = row1[9].ToString("P0");
- e11.Text = row1[10].ToString("P0");
- e12.Text = row1[11].ToString("P0");
- e10_Copy.Text = row2[9].ToString("P0");
- e11_Copy.Text = row2[10].ToString("P0");
- e12_Copy.Text = row2[11].ToString("P0");
- }
- else if (i == 5)
- {
- e13.Text = row1[12].ToString("P0");
- e14.Text = row1[13].ToString("P0");
- e15.Text = row1[14].ToString("P0");
- e13_Copy.Text = row2[12].ToString("P0");
- e14_Copy.Text = row2[13].ToString("P0");
- e15_Copy.Text = row2[14].ToString("P0");
- }
- else if (i == 6)
- {
- e16.Text = row1[15].ToString("P0");
- e17.Text = row1[16].ToString("P0");
- e18.Text = row1[17].ToString("P0");
- e16_Copy.Text = row2[15].ToString("P0");
- e17_Copy.Text = row2[16].ToString("P0");
- e18_Copy.Text = row2[17].ToString("P0");
- }
- }
- }
- async Task<bool> ReadVariabletest()
- {
- bool succeeded = false;
- while (!succeeded)
- {
- //Kopiert die Excel Datai
- File.Copy(excelpath, excelpathcopy);
- //open file excel using microsoft dll
- Application app = new Application();
- //open workbook
- Workbook wk = app.Workbooks.Open(excelpathcopy);
- //get first sheet
- Worksheet sh = wk.Worksheets[1];
- //get cell
- // Cells[unten/rechts] Example: [1,2] = B1
- int actuallyday = DateTime.Now.Day;
- int daystart = 1;
- int excelStartRow = 1;
- int excelEndRow = 3;
- int excelStartSpalte = 1;
- int excelEndSpalte = 3;
- for (int sp = excelStartSpalte; sp < excelEndSpalte; sp++)
- {
- for (int i = daystart; i <= actuallyday; i++)
- {
- for (int a = excelStartRow; a <= excelEndRow; a++)
- {
- var aExcel = sh.Cells[sp, a];
- //reihe eins
- if (sp == 1)
- {
- if (aExcel.Text == String.Empty)
- {
- double value = 0.0;
- row1.Add(value);
- }
- else
- {
- double value = Convert.ToDouble(aExcel.Value.ToString());
- row1.Add(value);
- }
- }
- //reihe zwei
- if (sp == 2)
- {
- if (aExcel.Text == String.Empty)
- {
- double value = 0.0;
- row2.Add(value);
- }
- else
- {
- double value = Convert.ToDouble(aExcel.Value.ToString());
- row2.Add(value);
- }
- }
- }
- excelEndRow++;
- excelEndRow++;
- excelEndRow++;
- excelStartRow++;
- excelStartRow++;
- excelStartRow++;
- }
- excelStartRow = 1;
- excelEndRow = 3;
- daystart = 1;
- }
- //Excel wieder schließen ohne zu speichern!
- app.DisplayAlerts = false;
- wk.Close(0);
- app.Quit();
- //Delete the excel copy
- File.Delete(excelpathcopy);
- KillSpecificExcelFileProcess("");
- await Task.Delay(10000);
- //Der Durchlauf geht alle 30 Minuten
- //await Task.Delay(108000000);
- }
- return succeeded;
- }
- private void KillSpecificExcelFileProcess(string excelFileName)
- {
- var processes = from p in Process.GetProcessesByName("EXCEL")
- select p;
- foreach (var process in processes)
- {
- if (process.MainWindowTitle == excelFileName)
- process.Kill();
- }
- }
- }
ich hab das eine in den text nur bis tag 6 als test gemacht
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „MrLaTuNiX“ ()