Asp.net 模板下载和导入到DataTable中
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中的更多相关文章
- SVN下载项目导入到eclipse中出现错误解决办法:
首先要确定settings.xml配置路径正确 (下面是我自己的路径,设置自己的路径) 用客户端暴力解决方法: 1)把本地中工作空间中内容删除重新下载 2)导入到eclipse中 会出现一些问题 右键 ...
- Excel 导入到Datatable 中,再使用常规方法写入数据库
首先呢?要看你的电脑的office版本,我的是office 2013 .为了使用oledb程序,需要安装一个引擎.名字为AccessDatabaseEngine.exe.这里不过多介绍了哦.它的数据库 ...
- Asp.net 修改已有数据的DataTable中某列的数据类型
DataTable dt_PI = new DataTable(); //克隆表结构 dt_PI = ds.Tables[].Clone(); dt_PI.Columns["FLTFullP ...
- 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
using System; using System.Collections.Generic; using System.Text; using System.IO; using NPOI.SS.Us ...
- winfrom 使用NPOI导入导出Excel(xls/xlsx)数据到DataTable中
1.通过NUGET管理器下载nopi,在引入命令空间 using System; using System.Collections.Generic; using System.Text; using ...
- Excel导入到DataTable ,DataTable导入到Excel
using System; using System.Collections.Generic; using System.Linq; using System.Text; using NPOI.SS. ...
- 使用OpenXML将Excel内容读取到DataTable中
前言:前面的几篇文章简单的介绍了如何使用OpenXML创建Excel文档.由于在平时的工作中需要经常使用到Excel的读写操作,简单的介绍下使用 OpenXML读取Excel中得数据.当然使用Open ...
- SpringBoot集成MongoDB之导入导出和模板下载
前言 自己很对自己在项目中集成MongoDb做的导入导出以及模板下载的方法总结如下,有不到之处敬请批评指正! 1.pom.xml依赖引入 <!-- excel导入导出 --> <de ...
- Spring1:Spring简介、环境搭建、源码下载及导入MyEclipse
框架学习前言 这个模块是面向Spring的,Spring的学习我是这么想的: 1.简单介绍Spring,主要是从网上借鉴一些重点 2.尽量说明清楚Spring的使用方法以及细节点 3.尽量以自己的理解 ...
随机推荐
- HDOJ.1789 Doing Homework again (贪心)
Doing Homework again 点我挑战题目 题意分析 给出n组数据,每组数据中有每份作业的deadline和score,如果不能按期完成,则要扣相应score,求每组数据最少扣除的scor ...
- ContestHunter暑假欢乐赛 SRM 06
T1二分check...为什么这么显然的我没看出来TAT,还在想倒着加入并查集check什么的,题写太多思维定势啦QAQ T2是NOIP题的弱化版...当时没看出来,写了个DP.可以看出这一位比上一位 ...
- Chrome浏览器的使用技巧
查询Chrome浏览器自身的DNS缓存 在浏览器的地址栏输入:chrome://net-internals/#dns 在左侧的菜单栏,点击对应菜单可以查看对应选项的相关内容. 在Chrome浏览器中输 ...
- Java Zip压缩
1.压缩文件或整个目录 // ZipCompression.java import java.io.File;import java.io.FileInputStream;import java.io ...
- arp协议及简单应用
1:什么是arp协议 参考文章:http://blog.csdn.net/tigerjibo/article/details/7351992 全称是:Address Resolution Protoc ...
- sudo 的配置详解
从编写 sudo 配置文件/etc/sudoers开始: sudo的配置文件是/etc/sudoers ,我们可以用他的专用编辑工具visodu ,此工具的好处是在添加规则不太准确时,保存退出时会提示 ...
- Eclipse中安装插件的三种方式
转载自:http://www.cnblogs.com/lcgustc/archive/2013/01/03/2843496.html Eclipse也用了很久,但是都没有怎么去研究过怎么安装插件,今天 ...
- 网络编程:I/O模型
I/O模型 Unix下可用的5种I/O模型有: 阻塞式I/O 非阻塞式I/O I/O复用(select和poll,epoll) 信号驱动式I/O 异步I/O(POSIX的aio_系列函数) 一个输入操 ...
- easyui datagrid 的数据加载Json数据
var obj = {'total':100,'rows':[{id:'1',name:'一'},{id:'2',name:'二'}]}; $('#tt').datagrid('loadData',o ...
- 01背包入门 dp
题目引入: 有n个重量和价值分别为Wi,Vi的物品.从这些物品中挑选出总重量不超过W的物品,求所有挑选方案中的价值总和的最大值. 分析: 首先,我们用最普通的方法,针对每个物品是否放入背包进行搜索. ...