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 ...
随机推荐
- Azure billing 分析
昨天把西欧的2012的VM删掉,在北美新建一个2008的VM,装了sql2005 express 在C盘,这样存储就变成2个位置了,西欧和美国,然后放在那里不操作一天,发现billing多了很多, S ...
- java中HashSet详解(转)
HashSet 的实现 对于 HashSet 而言,它是基于 HashMap 实现的,HashSet 底层采用 HashMap 来保存所有元素,因此 HashSet 的实现比较简单,查看 HashSe ...
- windows下根据端口号杀死进程
Windows不像Linux,Unix那样,ps -ef 查出端口和进程号,然后根据进程号直接kill进程. Windows根据端口号杀死进程要分三步: 第一步 根据端口号寻找进程号 C:\>n ...
- ios app 解决微信扫二维码不能跳转问题
<script> (function(){ // Setup GA (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- C++之路进阶——codevs1285(宠物收养所)
1285 宠物收养所 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 最近,阿Q开了一间宠物收养所.收养所提供两种服 ...
- HDU 4069 Squiggly Sudoku(DLX)(The 36th ACM/ICPC Asia Regional Fuzhou Site —— Online Contest)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4069 Problem Description Today we play a squiggly sud ...
- shp图层创建
IField,IFieldEdit,IFields,IFieldsEdit,IGeometryDef,IGeometryDefEdit接口 (2013-05-06 20:40:27) 转载▼ 标签: ...
- RMAN命令
一.启动.关闭数据库 在RMAN中执行关闭和启动数据库的命令与SQL环境下一模一样.当然,在执行之前,你需要先连接到目标数据库,如例: C:\Documents and Settings\Admini ...
- 对DotNet分布式应用搭建的考虑
设计前的考虑和准备工作 1 对业务需求的理解重要性远远胜于对技术架构的理解 2 架构包含技术架构和业务架构 3 没有万能和通用的架构,只有符合自身业务需求的架构 4 架构本身的复杂性要截至在架构设计阶 ...