ASP.NET

xxzjzb1 2009-04-30 06:27:11
导入Excel表
if (FileUpload1.HasFile == false)
{
Response.Write("<script>alert('请您选择Excel文件')</script> ");
return;//当无文件时,返回
}
string IsXls = Path.GetExtension(FileUpload1.FileName).ToString().ToLower();
if (IsXls != ".xls")
{
Response.Write("<script>alert('只可以选择Excel文件')</script>");
return;//当选择的不是Excel文件时,返回
}
string error = null;
SqlConnection cn = new SqlConnection("Data Source=(local);Initial Catalog=student;Persist Security Info=True;User ID=sa;Password=123");
cn.Open();
string strpath = FileUpload1.PostedFile.FileName.ToString(); //获取Execle文件路径
string filename = FileUpload1.FileName; //获取Execle文件名
DataSet ds = ExecleDs(strpath, filename);
DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组
int rowsnum = ds.Tables[0].Rows.Count;
if (rowsnum == 0)
{
Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对记录进行提示
return;
}
else{}————部分代码
本来挺管用的“空表即提示”,可是现在不知道为什么,空表不执行“验证为空表”,直接执行else后面的代码,为什么呢?


还有如果“导入的Excel表”是打开,记得刚开始抛出异常(“被占用”),可是现在不抛出了,而是执行完后,Excel只显示标题栏和任务栏,中间为空,为什么呢?
...全文
129 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2009-05-01
  • 打赏
  • 举报
回复
Excel进程没有被关掉。到task Manager中杀掉所有Excel进程再试一试。

另外我觉得SqlConnection cn这个也要close掉。
happy664618843 2009-04-30
  • 打赏
  • 举报
回复
顶顶啊!学习!
wuyq11 2009-04-30
  • 打赏
  • 举报
回复
操作excel前,关闭相关EXCEL进程。再调试看看数据
if(file1.PostedFile.FileName!="")
{
try
{
strPath=file1.PostedFile.FileName;
string fileExtName= strPath.Substring(strPath.LastIndexOf(".")+1);
if(fileExtName.Trim()!="xls")
{
this.Response.Write("<script language='javascript'>alert('文件格式不正确')</script>");
return;
}
strMath=Server.MapPath("../Import/");
strName=strPath.Substring(strPath.LastIndexOf("\\")+1);
if(File.Exists(strMath+strName))
File.Delete(strMath+strName);
file1.PostedFile.SaveAs(strMath+strName);
strPathName=strMath+strName;
this.Response.Write("<script language='javascript'>alert('上传成功')</script>");
}
catch
{
this.Response.Write("<script language='javascript'>alert('上传失败')</script>");
try
{
System.Diagnostics.Process[] myProcesses;
myProcesses =System.Diagnostics.Process.GetProcessesByName("excel");
foreach (System.Diagnostics.Process instance in myProcesses)
{
instance.Kill();
}
File.Delete(strPathName);
}
catch
{}
return;
}
}
else
{
Response.Write("<script language='javascript'>alert('请选择需要上传的数据文件')</script>");
return ;
}
llsen 2009-04-30
  • 打赏
  • 举报
回复
可能excel被其它程序占用
在打开着
然后操作就出错了


你操作这个的时候,可以把要操作的excel关掉

62,267

社区成员

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

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

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

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