次のコードを使用して、データテーブルからExcelファイルにデータをインポートしています。
public void ExportDataTable(DataTable dt)
{
string attachment = "attachment; filename=EmployeeList.xls";
HttpContext.Current.Response.Clear();
HttpContext.Current.Response.AddHeader("content-disposition", attachment);
HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
string sTab = "";
foreach (DataColumn dc in dt.Columns)
{
HttpContext.Current.Response.Write(sTab + dc.ColumnName);
sTab = "\t";
}
HttpContext.Current.Response.Write("\n");
int i;
foreach (DataRow dr in dt.Rows)
{
sTab = "";
for (i = 0; i < dt.Columns.Count; i++)
{
HttpContext.Current.Response.Write(sTab + dr[i].ToString());
sTab = "\t";
}
HttpContext.Current.Response.Write("\n");
}
HttpContext.Current.Response.End();
}
正常に動作しています。
このExcelファイルをデータテーブルにインポートすると、次のエラーが発生します。
外部テーブルが予期された形式ではありません。
これがExcelファイルをデータテーブルにエクスポートするための私のコードです:
public static DataTable excelToDataTable(string file)
{
DataTable dt = new DataTable();
OleDbConnection oledbcn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Server.MapPath("EmployeeList.xls").ToString(); Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
string SheetName = "EmployeeList";
oledbcn.Open();
OleDbCommand cmd = new OleDbCommand(@"SELECT * FROM [" + SheetName + "$]", oledbcn);
OleDbDataAdapter oledbda = new OleDbDataAdapter();
oledbda.SelectCommand = cmd;
oledbda.Fill(dt);
oledbcn.Close();
return dt;
}
MSOffice2003および2007のExcelファイルをエクスポートおよびインポートできるように問題を解決してください。
ありがとう、Rajbir