C# import z EXCEL i konwersja w locie...

0

Mam takie pytanie... Chciałbym zaimportować dane w EXCEL ale wcześniej chciałbym rozdzielić dane z Nazwy Firmy na osobne kolumny które są rozdzielone przecinkiem.Układ danych jest taki
LP | NAZWA BRANŻY | NAZWA FIRMY|

  1. | Spożywcza| Grosik,21-500 Kozia Wólka,tel. 555666444|
  2. | Farmaceutyczna| Apteka Orzeł, 55-200 Kozi Bobek, tel. 666|

I chciałbym teraz aby np. Nazwa firmy była w jednej kolumnie kod pocztowy z nazwą miejscowości w następnej a telefon w następnej...
I za bardzo nie wiem jak to ogarnąć w C#. Z góry dziękuję za pomoc.


private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                OpenFileDialog openfile1 = new OpenFileDialog();
                if (openfile1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    this.textBox1.Text = openfile1.FileName;
               
                    string pathconn = "Provider = Microsoft.jet.OLEDB.4.0; Data source=" + textBox1.Text + ";Extended Properties=\"Excel 8.0;HDR= yes;\";";
                    OleDbConnection conn = new OleDbConnection(pathconn);
                    OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter("Select * from [Testowy$]", conn);
                    DataTable dt = new DataTable();
                    MyDataAdapter.Fill(dt);
                    dataGridView1.DataSource = dt;
                }
            }
            catch
            {

            }

0

Czemu nie skorzystasz z biblioteki Microsoft.Office.Interop.Excel?
Stosując Range.TextToColumns powinieneś osiągnąć oczekiwany rezultat.

0

EPPlus
Ze łba więc coś może nie działać

var package = new ExcelPackage(new FileInfo("..\\..\\..\\sample.xlsx"));
 
//odczyt z arkusz 1
ExcelWorksheet workSheet1 = package.Workbook.Worksheets[1];
//Zapis do arkusz 2
ExcelWorksheet workSheet2 = package.Workbook.Worksheets[2];

//| Spożywcza| Grosik,21-500 Kozia Wólka,tel. 555666444|

// iteracja po wierszach 
string addr = workSheet1.Cells[i, 2].Value.ToString(); // nie pamiętam czy w Cells pierwsza jest kolumna czy wiersz

var companyData = addr.Split(',');

workSheet2.Cells[i, 1].Vaue = workSheet1.Cells[i, 1].Value; // przepisanie branży
workSheet2.Cells[i, 2].Vaue = companyData[0];
workSheet2.Cells[i, 3].Vaue = companyData[1];
workSheet2.Cells[i, 4].Vaue = companyData[2];

Jeśłi kod pocztowy ma być osobno to trzeba jeszcze zroić
var kodMiasto = companyData[1].Split(' ');
i masz w kodMiasto[0] kod a w kodMiasto[1] miasto;

0

Ja korzystałem z tego: https://github.com/ClosedXML/ClosedXML
Plus taki, że nie wymaga zainstalowanego Office.

1 użytkowników online, w tym zalogowanych: 0, gości: 1