Excel スプレッドシートを .csv ファイルにロードする方法を学ぶために与えられたコードを調べていますDataTable
。私はその部分を機能させました。少なくとも、異常終了しなかったので機能したと思います。ここでやりたいことは、DataTable に値が設定されているかどうかを確認することです。私が抱えている問題はForm
、クラスからリストを認識させることです。
私のクラスのコードは次のとおりです。
namespace WindowsFormsApplication12
{
class Class1
{
public List<DataTable> ImportExcel(string FileName)
{
List<DataTable> _dataTables = new List<DataTable>();
string _ConnectionString = string.Empty;
string _Extension = Path.GetExtension(FileName);
if (_Extension.Equals(".xls", StringComparison.CurrentCultureIgnoreCase))
{
_ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + FileName + ";Extended Properties=Excel 12.0;";
}
else if (_Extension.Equals(".xlsx", StringComparison.CurrentCultureIgnoreCase))
{
_ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=Excel 12.0 Xml;";
}
DataTable dataTable = null;
var count = 0;
using (OleDbConnection oleDbConnection = new OleDbConnection(string.Format(_ConnectionString, FileName)))
{
oleDbConnection.Open();
DataTable dbSchema = oleDbConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables_Info, null);
foreach (DataRow item in dbSchema.Rows)
{
using (OleDbCommand oleDbCommand = new OleDbCommand())
{
oleDbCommand.Connection = oleDbConnection;
oleDbCommand.CommandText = string.Format("SELECT * FROM [Sheet1$]", item["TABLE_NAME"].ToString());
using (OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter())
{
if (count < 3)
{
oleDbDataAdapter.SelectCommand = oleDbCommand;
dataTable = new DataTable(item["TABLE_NAME"].ToString());
oleDbDataAdapter.Fill(dataTable);
_dataTables.Add(dataTable);
count++;
}
}
}
}
}
return _dataTables;
}
}
}
私のフォームのコードは次のとおりです。
namespace WindowsFormsApplication12
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
string fileName = textBox1.Text;
Class1 ext = new Class1();
if (string.IsNullOrEmpty(fileName))
MessageBox.Show("Please enter a file extension");
else
ext.ImportExcel(fileName);
}
}
}
私は次のようないくつかのことを試しました:
List<DataTable> ldt = new Class1.ImportExcel
ListBox.Items.Add(ext.ImportExcel._dataTables)
他のいくつかのものと一緒ですが、どれも機能していないようです。a を呼び出す方法についてグーグルで検索しList
ましたが、何も機能しませんでした。DataTable
以前の演習で aを呼び出しましたが、それをこのコードに合わせることはできませんでした。私に役立つドキュメントがある場合、または私が近くにいる場合は、正しい方向に私を押してください。前もって感謝します。