iis运行asp.net网站时候,Excel导入SQL数据时候出现问题,读不出Excel的sheet内容,vs运行是没有错误的
.net中excel导入sql 报错:未将对象引用设置到对象的实例
答案:5 悬赏:0
解决时间 2021-03-06 12:49
- 提问者网友:娇妻失忆
- 2021-03-06 01:20
最佳答案
- 二级知识专家网友:我颠覆世界
- 2021-03-06 02:19
计算机系统的问题
全部回答
- 1楼网友:余生继续浪
- 2021-03-06 05:59
我暂时保留我的看法!
- 2楼网友:浪者不回头
- 2021-03-06 04:50
log()
{
//string localFilePath, fileNameExt, newFileName, FilePath;
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
//设置文件类型
saveFileDialog1.Filter = " excel files(*.xls)|*.xls";
//设置默认文件类型显示顺序
saveFileDialog1.FilterIndex = 2;
//保存对话框是否记忆上次打开的目录
saveFileDialog1.RestoreDirectory = true;
//点了保存按钮进入
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
DataTable dt=(DataTable)this.DataGridView.DataSource;
TableToExcel(saveFileDialog1.FileName, dt, "test");
}
}
static public void TableToExcel(string excel, DataTable tb, string tbname)
{
try
{
OleDbConnection connex = GetConnFromExcel(excel); //获取到excel文件的oledb连接
string ct = "CREATE TABLE " + tbname + " ("; //以下生成一个sql命令向excel中插入一个表
foreach (DataColumn clmn in tb.Columns)
{
switch (clmn.DataType.Name) //根据不同数据类型分别处理
{
case "Decimal":
ct += clmn.ColumnName + " Decimal,";
break;
case "Double":
ct += clmn.ColumnName + " Double,";
break;
default:
ct += clmn.ColumnName + " string,";
break;
}
}
ct = ct.Substring(0, ct.Length - 1) + ")";
OleDbCommand cmd1 = new OleDbCommand(ct, connex);
cmd1.ExecuteNonQuery(); //向excel中插入一个表
foreach (DataRow r in tb.Rows) //下面向excel中一行一行写入数据
{
string fs = "", vs = "";
foreach (DataColumn clmn in tb.Columns)
{
fs += clmn.ColumnName + ",";
if (r[clmn.ColumnName] == DBNull.Value)
{
vs += "null,";
continue;
}
switch (clmn.DataType.Name) //根据不同数据类型分别处理
{
case "Decimal":
vs += ((decimal)r[clmn.ColumnName]).ToString("0.00") + ",";
break;
case "Double":
vs += ((double)r[clmn.ColumnName]).ToString("0.00") + ",";
break;
case "DateTime":
vs += "'" + ((DateTime)r[clmn.ColumnName]).ToShortDateString() + "',";
break;
default:
vs += "'" + r[clmn.ColumnName].ToString() + "',";
break;
}
}
string sqlstr = "insert into [" + tbname + "$] (" + fs.Substring(0, fs.Length - 1) + ") values (" + vs.Substring(0, vs.Length - 1) + ")";
OleDbCommand cmd = new OleDbCommand(sqlstr, connex);
cmd.ExecuteNonQuery(); //向excel中插入数据
}
connex.Close();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
}
static public OleDbConnection GetConnFromExcel(string ExcelFileName)
{
try
{
OleDbConnection connEX = new OleDbConnection();
connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=Excel 8.0";
//connEX.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFileName + ";Extended Properties=""Excel 8.0;IMEX=1;""";
connEX.Open();
return connEX;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return null;
}
}
另外,虚机团上产品团购,超级便宜
- 3楼网友:不羁的心
- 2021-03-06 04:04
读不出Excel的sheet内容,vs运行是没有错误的
----------------
一般是因为你的excel某些字段列的数据格式和数据库对应表字段数据格式不匹配,可能会发生这样的问题。
- 4楼网友:何必打扰
- 2021-03-06 02:59
这个错的范围太广了,你代码调试一下,错误就很容易找的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |