asp 操作excel,插入列

weimei521 2017-11-23 05:03:15
这是操作excel的代码
 string tmpOutFile = System.IO.Path.GetTempFileName() + ".xls";
//C:\Users\85550\AppData\Local\Temp\tmp6977.tmp.xls
OleDbConnection conn = new OleDbConnection(string.Format(OleDbHelper.connectionStringBase, tmpOutFile));

try
{

for (int type = 1; type < 3; type++)
{
//title
string title = string.Format("Update title{0} Set F1='厦门大学附属中山医院 {1}至{2}{3}'", type, txtBegin.Text, txtEnd.Text, GetSumName(type));
OleDbHelper.ExecuteSql(tmpOutFile, OleDbHelper.TEMPLATE_STATISTICSURVEYITEMBYPLAN, conn, title);

// leftTitle
StringBuilder leftTitle = new StringBuilder(200);
leftTitle.Append(string.Format("Update leftTitle{0} SET F1='序号',F2='科室',F3='回访总人数',F4='回访成功人数',F5='科室总满意度(%)'", type));
OleDbHelper.ExecuteSql(tmpOutFile, OleDbHelper.TEMPLATE_STATISTICSURVEYITEMBYPLAN, conn, leftTitle.ToString());

//rightTitle
StringBuilder rightTitle = new StringBuilder(200);
rightTitle.Append(string.Format("Update rightTitle{0} SET ", type));
DataRow[] titles = dsData.Tables[0].Select(null, null, DataViewRowState.CurrentRows);
int i = 1;
//Update rightTitle1 SET F1='医患沟通',F2='医师服务态度',F3='护士服务态度',F4='医疗技术',F5='护理技术操作',
//F6='拒收红包',F7='饮食、睡眠',F8='用药情况',F9='功能锻炼',F10='病区环境'
foreach (DataRow drOne in titles)
{
rightTitle.Append(string.Format("F{0}='{1}',", i++.ToString().Trim(), drOne["Name"]));
}
OleDbHelper.ExecuteSql(tmpOutFile, OleDbHelper.TEMPLATE_STATISTICSURVEYITEMBYPLAN, rightTitle.ToString().Substring(0, rightTitle.Length - 1));


这是执行sql语句的方法
 public static void ExecuteSql(string tmpOutFile, string templateName, string SQLString)
{
try
{
if (!File.Exists(tmpOutFile))
{
File.Copy(HttpContext.Current.Server.MapPath(@"~\App_Data\") + templateName, tmpOutFile);

}
using (OleDbConnection conn = new OleDbConnection(string.Format(connectionStringBase, tmpOutFile)))
{
OleDbCommand cmd = new OleDbCommand(SQLString, conn);
if (conn.State != ConnectionState.Open)
{
conn.Open();
}
cmd.ExecuteNonQuery();
}
}
catch (IOException ie)
{
throw ie;
}
catch (OleDbException oe)
{
throw oe;
}
}


问题是这样,在对excel的title和lefttitle操作的时候都不会报错,但是在对righttitle操作的时候,在ExecuteSql方法里报错,提示 至少一个参数没有被指定值。

查找原因是因为,这里只有7列,而修改了10列,如果把
Update rightTitle1 SET F1='医患沟通',F2='医师服务态度',F3='护士服务态度',F4='医疗技术',F5='护理技术操作',
//F6='拒收红包',F7='饮食、睡眠',F8='用药情况',F9='功能锻炼',F10='病区环境'
改成
Update rightTitle1 SET F1='医患沟通',F2='医师服务态度',F3='护士服务态度',F4='医疗技术',F5='护理技术操作',
//F6='拒收红包',F7='饮食、睡眠' 就不会报错,这个问题要怎么解决?
...全文
243 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weimei521 2017-12-04
  • 打赏
  • 举报
回复
引用 2 楼 tempname866 的回复:
你righttitle和title,lefttitle调用的ExecuteSql不是同一个函数(参数少了一个),你是故意的,还是漏了个
参数没少,后来找到了,因为导出的文件只有7列,数据有10列,分给你吧,没人回答
tempname866 2017-11-30
  • 打赏
  • 举报
回复
你righttitle和title,lefttitle调用的ExecuteSql不是同一个函数(参数少了一个),你是故意的,还是漏了个
weimei521 2017-11-23
  • 打赏
  • 举报
回复

这个是要导出的数据

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧