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 ...
随机推荐
- IDEA 常见文件类型的图标介绍
官网地址:http://www.jetbrains.com/idea/webhelp/symbols.html 对于各个图标,上图的 Description 写得非常详细,但是有几个还是 ...
- Lintcode: Majority Number III
Given an array of integers and a number k, the majority number is the number that occurs more than 1 ...
- nyist 597 完数?
http://acm.nyist.net/JudgeOnline/problem.php?pid=597 完数? 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 一个 ...
- 用Appium去操作移动设备上的chrome
最近在积极努力的学习Appium,今天成功运行了官网上的demo,在此做一个小小的总结: 前期准备工作: (1)在要运行的真机或模拟器上安装chrome. 注意:x86的虚拟机是不支持的,但是经过本人 ...
- springday02-go4
1.复制xml到container/annotation下2.新建Waiter类,构造函数,初始化以及销毁函数3.在Waiter方法体前面加上@Component4.xml中添加组件扫描代码5.tes ...
- Ajax 核心函数
今天刚刚了解了Ajax的一个核心函数,由于对javascript还没有系统的学习,目前还没有深入研究Ajax.但是在运用此函数的同时也发现了一些问题--编码问题.这样在后台接收到的URL参数若果有汉字 ...
- 现在觉得IT还挺有意思
前两天刚刚接触编程,用的是C#.开始确实枯燥,但是今天的感觉就好多了,还挺有意思.根据老师讲的课程自己编写了小程序,运行起来还不错.在这里分享下. 关于时间安排的小程序: int sj; int aa ...
- AR 应收 表
AR 应收 应收事务处理相关表 SELECT * FROM ar.ar_batches_all; --事务处理批 SELECT * FROM ar.ra_custom ...
- 夺命雷公狗---node.js---6net模块玩telnet通信(下)
我们来升级玩玩,废话不多说,代码如下所示: /** * Created by leigood on 2016/8/12. */ var net = require('net'); var ChatSr ...
- 亚马逊ec2服务器上无法使用sudo执行npm命令的解决办法
sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s ...