提示我:未將物件參考設定到物件的實體。

private DataTable xsldata()
{
string fileExtenSion;
fileExtenSion = Path.GetExtension(filenameurl);
try
{
string FileName = "App_Data/" + Path.GetFileName(filenameurl);
//HDR=Yes,這代表第一行是標題,不做為資料使用 ,如果用HDR=NO,則表示第一行不是標題,做為資料來使用。系統默認的是YES
string connstr2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filenameurl + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1;'";
string connstr2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filenameurl + ";Extended Properties=\"Excel 12.0;HDR=YES\"";
OleDbConnection conn;
if (fileExtenSion.ToLower() == ".xls")
{
conn = new OleDbConnection(connstr2003);
}
else
{
conn = new OleDbConnection(connstr2007);
}
conn.Open();
string sql = "select * from [Sheet1$]";
OleDbCommand cmd = new OleDbCommand(sql, conn);
DataTable dt = new DataTable();
OleDbDataReader sdr = cmd.ExecuteReader();
dt.Load(sdr);
sdr.Close();
conn.Close();
return dt;
}
catch (Exception)
{
return null;
}
}
private void Form1_Load(object sender, EventArgs e)
{
reload();
}
public void reload()
{
c_datatype.Items.Add("聯帶銷售統計表");
c_datatype.Items.Add("專柜收銀計劃完成表");
c_datatype.SelectedIndex = 0;
}
private void b_browse_Click(object sender, EventArgs e)
{
//選擇目標檔案
OpenFileDialog infox = new OpenFileDialog();
infox.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
infox.Filter = "2003檔案|*.xls|2007及以上檔案|*.xlsx";
infox.RestoreDirectory = true;
infox.FilterIndex = 1;
if (infox.ShowDialog() == DialogResult.OK)
{
t_filename.Text = infox.FileName;
}
}
private void input_Click(object sender, EventArgs e)
{
filenameurl = t_filename.Text;
if (filenameurl != "")
{
OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Data_tg.mdb");
OleDbCommand cmd = conn.CreateCommand();
conn.Open();
DataTable exdt = xsldata();
switch(c_datatype.SelectedIndex)
{
case 0:
//先清空資料
OleDbCommand deletecmd = new OleDbCommand("delete from 聯帶銷售統計表", conn);
deletecmd.ExecuteNonQuery();
//資料匯入
for (int i = 1; i < exdt.Rows.Count; i++)
{
string yz = exdt.Rows[i][3].ToString();//業種業種名稱
double je = Convert.ToDouble(exdt.Rows[i][6]);//聯帶銷售金額
double bs = Convert.ToInt32(exdt.Rows[i][14]);//聯帶銷售筆數
if (yz != "")
{
OleDbCommand insertcmd = new OleDbCommand("insert into 聯帶銷售統計表 (業種,總聯帶金額,訂單聯帶筆數) values ('" + yz + "','" + je + "','" + bs + "')", conn);
insertcmd.ExecuteNonQuery();
}
}
conn.Close();
MessageBox.Show("資料匯入完成", "成功", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
filenameurl = null;
break;
case 1:
break;
}
}
else
{
MessageBox.Show("請選擇匯入檔案", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/221315.html
標籤:C#
上一篇:請問如何實作在2張表中的bigint型別的欄位的值互斥
下一篇:C#表單之間相互操作求解
