HTML页面:

        <tr>
<td colspan="" style="text-align: left; border: 1px;">
<asp:FileUpload ID="FileUpload1" runat="server" CssClass="dfFile" Width="350px" />
<asp:Button ID="btnImport" runat="server" Text="导入" CssClass="scbtn" OnClientClick="return LoadFile();"
OnClick="btnImport_Click" />
<asp:Button ID="btnDownLoad" runat="server" Text="模板下载" CssClass="scbtn" OnClick="btnDownLoad_Click" />
</td>
</tr>

Asp.net后台:

    #region 导入
/// <summary>
/// 导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//获得文件的扩展名
if (IsXls != ".xls" && IsXls != ".xlsx")
{
ShowMessageBox("只可以选择Excel文件");
return;
}
HttpPostedFile file = this.FileUpload1.PostedFile; string filename = FileUpload1.FileName; //获取Execle文件名
string filePath = Server.MapPath("../StorageCheck/CheckUpFiles/" + FileUpload1.FileName);
file.SaveAs(filePath);
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs, Encoding.GetEncoding("gb2312"));
try
{
DataSet ds = ExcelSqlConnection(filePath, filename); //调用自定义方法
DataTable dt = ds.Tables[]; //循环移除DataTable中的空行
List<DataRow> removelist = new List<DataRow>();
for (int i = ; i < dt.Rows.Count; i++)
{
bool rowIsNull = true; //标记是否有空行
for (int j = ; j < dt.Columns.Count; j++)
{
if (!string.IsNullOrEmpty(dt.Rows[i][j].ToString().Trim()))
{ rowIsNull = false;
}
}
if (rowIsNull)
{
removelist.Add(dt.Rows[i]);
}
}
for (int i = ; i < removelist.Count; i++)
{
dt.Rows.Remove(removelist[i]);
} string detName = "";
string detId = "";
if (dt != null && dt.Rows.Count > )
{
foreach (DataRow dr in dt.Rows)
{
detName += dr["箱号"].ToString() + "[" + dr["盒号"].ToString() + "]" + "[" + dr["起始卡号"].ToString() + "]" + "[" + dr["结束卡号"].ToString() + "]" +
"[" + dr["应有数量/张"].ToString() + "]" + "[" + dr["实际数量/张"].ToString() + "]" + "[" + dr["缺卡卡号"].ToString() + "];";
detId += dr["箱号"].ToString() + "," + dr["盒号"].ToString() + "," + dr["起始卡号"].ToString() + "," + dr["结束卡号"].ToString() + "," +
dr["应有数量/张"].ToString() + "," + dr["实际数量/张"].ToString() + "," + dr["缺卡卡号"].ToString(); if (string.IsNullOrEmpty(dr["缺卡卡号"].ToString()))
{
detId += "" + ";";
}
}
hf_CheckId.Value = detId.TrimEnd(';');
}
}
catch
{ }
finally
{
fs.Flush(); //释放流
fs.Close();//关闭流
}
}
#endregion #region 模板下载
/// <summary>
/// 模板下载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDownLoad_Click(object sender, EventArgs e)
{
//filePath为文件在服务器上的地址
string excelFile = Server.MapPath("../StorageCheck/DownLoad/白卡入库导入模板.xls");
FileInfo fi = new FileInfo(excelFile);
HttpResponse contextResponse = HttpContext.Current.Response;
contextResponse.Clear();
contextResponse.Buffer = true;
contextResponse.Charset = "GB2312"; //设置类型
contextResponse.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", excelFile)); //定义输出文件和文件名
contextResponse.AppendHeader("Content-Length", fi.Length.ToString());
contextResponse.ContentEncoding = Encoding.Default;
contextResponse.ContentType = "application/ms-excel";//设置输出文件类型为excel文件。 contextResponse.WriteFile(fi.FullName);
contextResponse.Flush();
contextResponse.End();
}
#endregion #region 读取Excel数据
/// <summary>
/// 读取Excel数据
/// </summary>
/// <param name="filepath">Excel服务器路径</param>
/// <param name="tableName">Excel表名称</param>
/// <returns></returns>
public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName)
{
string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
OleDbConnection ExcelConn = new OleDbConnection(strCon);
try
{
string strCom = string.Format("SELECT * FROM [Sheet1$]");
//string strCom = "select * from [" + tableName + "]";
ExcelConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn);
DataSet ds = new DataSet();
myCommand.Fill(ds, "[" + tableName + "$]");
ExcelConn.Close();
return ds;
}
catch
{
ExcelConn.Close();
return null;
}
}
#endregion

Asp.net 模板下载和导入到DataTable中的更多相关文章

  1. SVN下载项目导入到eclipse中出现错误解决办法:

    首先要确定settings.xml配置路径正确 (下面是我自己的路径,设置自己的路径) 用客户端暴力解决方法: 1)把本地中工作空间中内容删除重新下载 2)导入到eclipse中 会出现一些问题 右键 ...

  2. Excel 导入到Datatable 中,再使用常规方法写入数据库

    首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...

  3. Asp.net 修改已有数据的DataTable中某列的数据类型

    DataTable dt_PI = new DataTable(); //克隆表结构 dt_PI = ds.Tables[].Clone(); dt_PI.Columns["FLTFullP ...

  4. 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...

  5. winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中

    1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...

  6. Excel导入到DataTable ,DataTable导入到Excel

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...

  7. 使用OpenXML将Excel内容读取到DataTable中

    前言:前面的几篇文章简单的介绍了如何使用OpenXML创建Excel文档.由于在平时的工作中需要经常使用到Excel的读写操作,简单的介绍下使用 OpenXML读取Excel中得数据.当然使用Open ...

  8. SpringBoot集成MongoDB之导入导出和模板下载

    前言 自己很对自己在项目中集成MongoDb做的导入导出以及模板下载的方法总结如下,有不到之处敬请批评指正! 1.pom.xml依赖引入 <!-- excel导入导出 --> <de ...

  9. Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse

    框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...

随机推荐

  1. Codeforces 864E Fire(背包DP)

    背包DP,决策的时候记一下 jc[i][j]=1 表示第i个物品容量为j的时候要选,输出方案的时候倒推就好了 #include<iostream> #include<cstdlib& ...

  2. BZOJ1912 APIO2010 洛谷P3629 巡逻

    Description: 在一个地区中有 n 个村庄,编号为 1, 2, ..., n.有 n – 1 条道路连接着这些村 庄,每条道路刚好连接两个村庄,从任何一个村庄,都可以通过这些道路到达其 他任 ...

  3. django 给前端传递HTML内容

    django从view向template传递HTML字符串的时候,django默认不渲染此HTML,原因是为了防止这段字符串里面有恶意攻击的代码. 如果需要渲染这段字符串,需要在view里这样写: f ...

  4. UIColor延伸:判断两个颜色是否相等

    不管UIColor使用CIColor,CGColor还是其他方式初始化的,其CGColor属性都是可用的.CoreGraphics中提供一个函数,用于判断两个CGColor是否相等,因此我们可以通过这 ...

  5. [codeforces/gym/101350/L]维护“凸包”

    题目链接:http://codeforces.com/gym/101350/problems 给定n个墙,每个墙有一个高度,要支持动态修改墙的高度和查询这个“容器”能盛多少水. (队友)观察发现,能盛 ...

  6. SPOJ - HIGH :Highways (生成树计数)

    Highways 题目链接:https://vjudge.net/problem/SPOJ-HIGH Description: In some countries building highways ...

  7. ReentrantLock和synchronized区别和联系?

    相同:ReentrantLock提供了synchronized类似的功能和内存语义,都是可重入锁. 不同: 1.ReentrantLock功能性方面更全面,比如时间锁等候,可中断锁等候,锁投票等,因此 ...

  8. HDU1522 稳定婚姻匹配 模板

    Marriage is Stable Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  9. java RSA加密解密实现(含分段加密)

    该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detail/centralperk/50255 ...

  10. 【设计模式】 模式PK:抽象工厂模式VS建造者模式

    1.概述 抽象工厂模式实现对产品家族的创建,一个产品家族是这样的一系列产品:具有不同分类维度的产品组合,采用抽象工厂模式则是不需要关心构建过程,只关心什么产品由什么工厂生产即可.而建造者模式则是要求按 ...