palaber
Captain
- Registriert
- Juni 2006
- Beiträge
- 3.856
Hello Leute,
ich hab mal wieder ein neues Problem. Bin gerade dabei mir meine Aufgaben für morgen zurecht zu legen. Und zwar möchte ich morgen eine Progressbar implementieren, welche mir den Fortschritt vom import von Daten in Excel anzeigt.
Meine bisherige Suche hat mir nie etwas für meine Vorgehensweise geliefert. Ich schreibe die Daten von einem / mehreren Arrays in verschiedene Bereiche eines Datenblattes. Umsetzen tu ich dies meistens mit for-Schleifen.
Ich habe den Code mal angehängt. Ich selber hab mich hierbei bei MSDN bedient und den Code an meine Bedürfnisse angepasst.
Das ganze rufe ich über einen Button auf.
Wie gesagt, wenn auf diesen Button geklickt wird, soll die Fortschrittsanzeige durchlaufen. Ich bin mir jetzt nicht mal sicher, ob es für meine "Methode" Daten in Excel zu schreiben, eine Möglichkeit gibt die Fortschrittsanzeige zu aktuallisieren.
Kennt ihr gute Tutorials? Oder evtl. Lösungsansätze, die ich mir anschauen kann? Oder habt selber ne Idee? Bin nicht so das Programmierass!
Vielen Dank!
ich hab mal wieder ein neues Problem. Bin gerade dabei mir meine Aufgaben für morgen zurecht zu legen. Und zwar möchte ich morgen eine Progressbar implementieren, welche mir den Fortschritt vom import von Daten in Excel anzeigt.
Meine bisherige Suche hat mir nie etwas für meine Vorgehensweise geliefert. Ich schreibe die Daten von einem / mehreren Arrays in verschiedene Bereiche eines Datenblattes. Umsetzen tu ich dies meistens mit for-Schleifen.
Ich habe den Code mal angehängt. Ich selber hab mich hierbei bei MSDN bedient und den Code an meine Bedürfnisse angepasst.
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Excel = Microsoft.Office.Interop.Excel;
using System.Reflection;
namespace WindowsFormsApplication1
{
class UseExcel
{
public void safeDataToExcel(string[] arrSetData, double[] arrNAData)
{
Excel.Application oXL;
Excel._Workbook oWB;
Excel._Worksheet oSheet;
Excel.Range oRng;
string sTimeStamp = Convert.ToString(DateTime.Now);
int iCount = 0;
//Clean the TimeStampstring
ChangeString cS = new ChangeString();
sTimeStamp = cS.cleanTimestamp(sTimeStamp);
//Start Excel and get Application object.
oXL = new Excel.Application();
oXL.Visible = false;
//Open the existing Excel worksheet
oWB = oXL.Workbooks.Open(@"D:\C#\IITAv1\test\Excel_Files\IITS_Data_File_Template.xlsx");
// write AUTO to excelfile
if (arrSetData.Last() == "auto")
{
oSheet = (Excel._Worksheet)oWB.Worksheets.get_Item(2); //open the second worksheet (LearnedLimits)
//Description, Startfrequenz, Stopfrequenz
for (int i = 1; i < 6; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
oSheet.Cells[7, 1] = arrSetData[iCount];
iCount++;
for (int i = 9; iCount < (arrSetData.Length-1); i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
iCount = 0;
for (int i = 9; iCount < arrNAData.Length; i++)
{
oSheet.Cells[i, 2] = arrNAData[iCount];
iCount++;
}
//AutoFit columns A:B.
oRng = oSheet.get_Range("A1", "B1");
oRng.EntireColumn.AutoFit();
}
// write MANUAL to the excel sheet
else
{
oSheet = (Excel._Worksheet)oWB.Worksheets.get_Item(1); //open the first worksheet (ManualLimits)
//Description, Startfrequenz, Stopfrequenz
iCount = 1;
for (int i = 3; i < 6; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
//Limit 1 (4 Values)
iCount = 5;
for (int i = 8; i < 12; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
if (arrSetData.Length >= 13)
{
//Limit 2 (4 Values)
iCount = 9;
for (int i = 13; i < 17; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
}
if (arrSetData.Length >= 17)
{
//Limit 3 (4 Values)
iCount = 13;
for (int i = 18; i < 22; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
}
if (arrSetData.Length == 21)
{
//Limit 4 (4 Values)
iCount = 17;
for (int i = 23; i < 27; i++)
{
oSheet.Cells[i, 1] = arrSetData[iCount];
iCount++;
}
}
iCount = 0;
//Fill A28:A428 with an array of values (the values of the points).
for (int i = 28; iCount < arrNAData.Length; i++)
{
oSheet.Cells[i, 1] = arrNAData[iCount];
iCount++;
}
//AutoFit columns A:B.
oRng = oSheet.get_Range("A1", "B1");
oRng.EntireColumn.AutoFit();
}
//Save the Data to following path / filename (Partno + Timestamp)
oWB.SaveAs(@"D:\C#\IITAv1\test\Excel_Files\" + arrSetData[0] + "_" + sTimeStamp + ".xlsx");
oWB.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
GC.Collect();
}
}
}
Das ganze rufe ich über einen Button auf.
Code:
private void buttonSave_Click(object sender, EventArgs e)
{
try
{
labelResult.Text = "SAVE FILE";
groupBoxResult.BackColor = Color.LightGray;
UseExcel uE = new UseExcel();
if (arrDataInput.Last() == "auto")
{
uE.safeDataToExcel(arrDataInput, arrDoubleNAData);
}
else
{
uE.safeDataToExcel(arrDataInput, arrDoubleNAData);
}
MessageBox.Show("File saved!");
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex);
}
}
Kennt ihr gute Tutorials? Oder evtl. Lösungsansätze, die ich mir anschauen kann? Oder habt selber ne Idee? Bin nicht so das Programmierass!
Vielen Dank!