首先需要一个用来存储我们需要显示的内容,防止页面回发丢失(添加时使用)

#region 缓存文件

        private DataTable excelData;

        /// <summary>
/// 缓存已经读取过的Datatable
/// </summary>
public DataTable ExcelData
{
get
{
if (ViewState["mydata"] != null)
{
excelData = (DataTable)ViewState["mydata"];
}
return excelData;
}
set
{
ViewState["mydata"] = value;
}
} #endregion

接下来检查上传文件

 /// <summary>
/// 检查文件上传
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
public string CheckFile(string fileName)
{
if (string.IsNullOrEmpty(fileName))
{
return "Please ensure that you upload file exists!";
}
if (!fileName.ToLower().EndsWith(".xls") && !fileName.ToLower().EndsWith(".xlsx"))
{
return "You select the file format is not correct, please try again!";
}
if (fileName.IndexOf(".") <= 0)
{
return "Please select a file to upload!";
}
return "";
}
 /// <summary>
/// 连接Excel,并读取数据源
/// </summary>
/// <param name="filepath">数据源路径</param>
/// <returns>Excel文件的工作薄里的数据</returns>
public DataSet connExcel(string filepath)
{
if (!string.IsNullOrEmpty(filepath))
{
try
{
string connstring = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + filepath + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
OleDbConnection objconn = new OleDbConnection(connstring);
objconn.Open();
DataTable dt = objconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
string sheetname = "Sheet1$";
sheetname = dt.Rows[0]["TABLE_NAME"].ToString();
objconn.Close();
string strsql = "select * from [" + sheetname + "]";
DataSet ds = new DataSet();
OleDbDataAdapter adp = new OleDbDataAdapter(strsql, objconn);
adp.Fill(ds);
return ds;
}
catch (Exception ex)
{
throw new Exception("Occurs when a data source connection:" + ex.Message);
}
}
else
{
throw new Exception("File does not exist!");
}
}
 /// <summary>
/// 读取Excel
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
private DataTable readExcel(string path)
{
DataTable dt = new DataTable("myTestTable");
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Columns.Add("Sex");
DataView dv = new DataView(dt);
DataSet ds = connExcel(path);
return ds.Tables[0];
}
/// <summary>
/// 上传文件的方法
/// </summary>
/// <returns></returns>
[ScriptMethod]
private void PreviewData()
{
//获取文件名
string fileName = Path.GetFileName(this.fileSave.PostedFile.FileName);
//检索文件
string message = CheckFile(fileName);
if (!string.IsNullOrEmpty(message))
{
Page.ClientScript.RegisterStartupScript(this.GetType(), "ok", "alert('" + message + "')", true);
return;
}
try
{
string path = Server.MapPath("/MyTest/ExcelData/");
//文件是否存在,如果不存在则创建
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
//定义文件的随机数
Random rand = new Random();
path += rand.Next(0, 9999999) + DateTime.Now.Hour + DateTime.Now.Minute + fileName;
//上传文件
this.fileSave.PostedFile.SaveAs(path);
//将数据内容保存到缓存中
ExcelData = this.readExcel(path);
this.rptData.Visible = true;
this.rptData.DataSource = ExcelData;
this.rptData.DataBind();
}
catch (Exception ex)
{
throw ex;
//Page.ClientScript.RegisterStartupScript(this.GetType(), "no", "alert('" + ex.Message + "')", true);
}
}

C#读取Excel显示到repeater中的更多相关文章

  1. thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片

    <?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...

  2. WinForm 读取Excel 数据显示到窗体中

    最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... //读取Excel的帮助类 class SqExcellHelper { publi ...

  3. Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中

    一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...

  4. C#读取excel数据到datatable中

    DataTable dtGBPatient = new DataTable(); string strConn;string excelName; //注意:把一个excel文件看做一个数据库,一个s ...

  5. .net读取excel数据到DataSet中

    Dim objExcelFile As Excel.Application Dim objWorkBook As Excel.Workbook Dim objSheet As Excel.Worksh ...

  6. 读取Excel文件到DataTable中

    private static string[] GetExcelSheetNames(OleDbConnection conn)        {            DataTable dtbSh ...

  7. 读取Excel文件的两种方法

    第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(stri ...

  8. C#读取Excel几种方法的体会

    (1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接用 ...

  9. c#dev操作读取excel方法

    一:使用spreadsheetControl1 方法 1:打开excel; private void barButtonItem1_ItemClick(object sender, DevExpres ...

随机推荐

  1. j2ee Servlet、Filter、Listener

    首先,JSP/Servlet规范中定义了Servlet.Filter.Listener这三种角色,并没有定义Interceptor这个角色,Interceptor是某些MVC框架中的角色,比如Stru ...

  2. C++Primer 第四章

    //1.当我们对运算符进行重载的时候,其包括运算对象的类型和返回值的类型都是由该运算符定义的,但是运算对象的个数和优先级,结合律都是不能改变的 //2.当一个对象被用作右值的时候,用的是对象的值(内容 ...

  3. 算法提高 c++_ch02_01

    http://lx.lanqiao.org/problem.page?gpid=T237  算法提高 c++_ch02_01   时间限制:1.0s   内存限制:512.0MB      编写一个程 ...

  4. [原创]java WEB学习笔记86:Hibernate学习之路-- -映射 n-n 关系,单向n-n,双向n-n

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. C++的STL在C#中的应用

    这里主要讲几个重要的STL在C#中的应用:vector, map, hash_map, queue, set, stack, list. vector: 在C#中换成了list using Syste ...

  6. Linux内核之旅 链表实现

    #include "stdio.h" #include "stdlib.h" struct list_head{ struct list_head *prev; ...

  7. 部署ganglia3.7

    环境 centOS6.6 gmetad节点关闭iptable gmetad和httpd只需要在一台节点安装,gmond需要在每台节点上安装. 一.安装epel源 sudo wget http://do ...

  8. html5新增全局属性

    data-* 如:data-type,data-role等 hidden  <div hidden></div> 隐藏该div spellcheck <textarea ...

  9. canvas基本画图

    <img src="img/lamp.gif" id="lamp"/> <img src="img/eg_tulip.jpg&quo ...

  10. 典型的检查对float精度理解的代码

    -rand()%); vy = ); vz = ); pList_particle[i].m_velocity = Vector3(vx,vy,vz); ... 1,3行代码的vx和vz的值域可以通过 ...