Przeszukałem internet i nie mogłem znaleźć takiego pytania. Wszyscy szukali sposobu na zaimportowanie pojedynczego arkusza do pliku Excela, ale chcę zaimportować wszystkie arkusze w pliku do DataTable
w DataSet
, nie znając nazw arkuszy.Jak zaimportować wszystkie arkusze Excela do DataSet w języku C#
Przedtem nie robiłem zbyt wiele rzeczy z Excelem. Ten przykładowy kod i częściowo roboczego Znalazłem w internecie i to tylko analizuje daną nazwę arkusza:
public static DataSet Parse(string fileName, string workSheetName)
{
string connectionString = string.Format("provider=Microsoft.Jet.OLEDB.4.0; data source={0};Extended Properties=Excel 8.0;", fileName);
string query = string.Format("SELECT * FROM [{0}$]", workSheetName);
DataSet data = new DataSet();
using (OleDbConnection con = new OleDbConnection(connectionString))
{
con.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter(query, con);
adapter.Fill(data);
}
return data;
}
W powyższym kodzie, jak widać, workSheetName powinny być przekazywane w takim zapytaniu może wiedzieć, gdzie patrzeć na import. W moim przypadku chcę, aby przechodził przez wszystkie arkusze bez względu na to, jak je nazywają i importuje je do pojedynczych DataTable
's z DataSet
.
W gruncie rzeczy ostatnią rzeczą będzie DataSet
, w której każdy DataTable
przechowuje wiersze dla każdego arkusza w zaimportowanym pliku.
Ty naprawdę chcesz pracować z 'csv' pliku zamiast' xls' . Czy możesz zapisać go jako "csv"? – zsong