C#读取Excel显示到repeater中
首先需要一个用来存储我们需要显示的内容,防止页面回发丢失(添加时使用)
#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中的更多相关文章
- thinkphp用phpexcel读取excel,并修改列中的值,再导出excel,带往excel里写入图片
<?php class GetpriceAction extends AdministratorAction { // 文件保存路径 protected $savepath; // 允许上传的文 ...
- WinForm 读取Excel 数据显示到窗体中
最近教学中,需要用到WinForm 读取Excel数据,于是就做了一个简单的,废话不多说,直接codding... //读取Excel的帮助类 class SqExcellHelper { publi ...
- Python用xlrd读取Excel数据到list中再用xlwt把数据写入到新的Excel中
一.先用xlrd读取Excel数据到list列表中(存入列表中的数据如下图所示) import xlrd as xd #导入需要的包 import xlwt data =xd.open_workboo ...
- C#读取excel数据到datatable中
DataTable dtGBPatient = new DataTable(); string strConn;string excelName; //注意:把一个excel文件看做一个数据库,一个s ...
- .net读取excel数据到DataSet中
Dim objExcelFile As Excel.Application Dim objWorkBook As Excel.Workbook Dim objSheet As Excel.Worksh ...
- 读取Excel文件到DataTable中
private static string[] GetExcelSheetNames(OleDbConnection conn) { DataTable dtbSh ...
- 读取Excel文件的两种方法
第一种方法:传统方法,采用OleDB读取EXCEL文件, 优点:写法简单,缺点:服务器必须安有此组件才能用,不推荐使用 private DataSet GetConnect_DataSet2(stri ...
- C#读取Excel几种方法的体会
(1) OleDb: 用这种方法读取Excel速度还是非常的快的,但这种方式读取数据的时候不太灵活,不过可以在 DataTable 中对数据进行一些删减修改 这种方式将Excel作为一个数据源,直接用 ...
- c#dev操作读取excel方法
一:使用spreadsheetControl1 方法 1:打开excel; private void barButtonItem1_ItemClick(object sender, DevExpres ...
随机推荐
- wampserver,eclipse,PHPeclipse搭建php开发环境
使用wampserver,安装wampserver后: 1,)进入mysql console,修改mysql密码: 2,) 修改D:\wamp\apps\phpmyadmin3.4.10.1\conf ...
- [转] linux中常用的命令
系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS ...
- Java基础(1):Switch语句注意的5个地方
不得不说的几点小秘密: 1. switch 后面小括号中表达式的值必须是整型或字符型 2. case 后面的值可以是常量数值,如 1.2:也可以是一个常量表达式,如 2+2 :但不能是变量或带有变量的 ...
- collection和collections区别
collection和collections区别 collection-->是集合类的上级接口,继承他的接口主要有set,list collections-->是针对集合类的一个帮助类,提 ...
- 事务——sql server中的事务应用举例
sql中事务只针对一个update,delete,insert语句,如果一段程序中有超过一个这样的语句,就需要每个都判断是否出错,否则就会出现若干我们不希望的情形出现,举例如下(表结构见最后): 1, ...
- c#经典俄罗斯方块 vs2012开发
把网上两个开源的俄罗斯方块,整合到一起了,开发环境vs2012+.net 4.0,有问题.建议可以加群沟通哦 复古的 c#写的一个俄罗斯方块小游戏,友好的人机交互,具体功能如下: 1.游戏分七个关卡, ...
- ios学习笔记(二)第一个应用程序--Hello World
原文地址:http://blog.csdn.net/shangyuan21/article/details/18416537 上一篇文章,Windows7上使用VMWare搭建iPhone开发环境介绍 ...
- 雅虎工程师提供的CSS初始化代码
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,b ...
- 关于UIWindow(转)
(原文出自:http://www.cnblogs.com/wendingding/p/3770052.html,特别感谢) 一:[[UIScreen mainScreen] bounds] 和[UIS ...
- Android中常用单位dp,px,sp之间的相互转换
MainActivity如下: package cc.testunitswitch; import android.os.Bundle; import android.util.DisplayMetr ...