VB je jazyk, ktory bol dlhu dobu najvhodnejsi pre pracu s balikom office, vdaka rozsiahlemu API a podpore v samotnom jazku. V poslednej dobe to vsak uz dorobili aj do C# takze si mozes vybrat, ktory Ti viac vyhovuje.
Vseobecne existuju 3 pristupy, pomocou ktorych to mozes vyriesit. Ak mas nainstalovany balik office mal by si mat aj kniznice na ovladanie, s ktorymi pracovat je extremne jednoduche. Len si instaciujes spravnu triedu, ktora reprezentuje celu aplikaciu Excel (ano, taka trieda existuje) a uz len pouzivas jej rozhranie.
Dalsia metoda je pracovat s tym ako s XML, aj ked tak dokumenty office na prvy pohlad nevyzeraju jedna sa o XML subory, ktore sa daju normalne citat a modifikovat programovo (tento pristup by som Ti vsak velmi neodporucal kedze sa to moze zvrhnut vo velmi komplikovanu zalezitost)
Posledny sposob je pristupovat k obsahu priamo pomocou moznosti jazyka. .NET trochu prekvapivo ponuka moznost pisat SQL query nad excelovskymi dokumentami (tuto moznost som vyuzival ja, ale priznam sa, ze ja som to pouzil iba na citanie, nie na zapis. moja uloha bola presne opacna od Tvojej - exportovat excely do DB)
tu mas triedu, co vie citat exceli
Kód: Vybrať všetko
//Triede je potrebne v kostruktore zadat cestu k .xlsx suboru, ktory sa potom pokusi ulozit do listu na sharepointe
public class Importer
{
string filePath = @"";
public TMobileImporter(string filePath)
{
this.filePath = filePath;
}
public DataSet getExcelDataSet(string tableName)
{
// Create connection string variable. Modify the "Data Source"
// parameter as appropriate for your environment.
String sConnectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;
Data Source={0};
Extended Properties=Excel 12.0 Xml;", filePath);
// Create connection object by using the preceding connection string.
OleDbConnection objConn = new OleDbConnection(sConnectionString);
// Open connection with the database.
objConn.Open();
// The code to follow uses a SQL SELECT command to display the data from the worksheet.
// Create new OleDbCommand to return data from worksheet.
OleDbCommand objCmdSelect = new OleDbCommand("SELECT * FROM [List1$]", objConn);
// Create new OleDbDataAdapter that is used to build a DataSet
// based on the preceding SQL SELECT statement.
OleDbDataAdapter objAdapter = new OleDbDataAdapter();
// Pass the Select command to the adapter.
objAdapter.SelectCommand = objCmdSelect;
// Create new DataSet to hold information from the worksheet.
DataSet objDataset = new DataSet();
// Fill the DataSet with the information from the worksheet.
objAdapter.Fill(objDataset, tableName);
// Bind data to DataGrid control.
// Clean up objects.
objConn.Close();
return objDataset;
}
}
a tu je jej pouzitie
Kód: Vybrať všetko
Importer tmi = new Importer(@"C:\cesta\testexcel.xlsx");
//XLData je nazov tabulky, ktoru si DataSet interne vytvori, nazov moze byt akykolvek
//ale pri zmene je potrebne zmenit ho aj vo volani objDataset.Tables["XLData"].DefaultView
DataSet objDataset = tmi.getExcelDataSet("XLData");
kedze pracujes s obycajnym DataSetom verim, ze Ti to dovoli aj zapisovat.