`
zhouxin464585932
  • 浏览: 80411 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

ASP.NET读取EXCEL文件的三种经典方法

阅读更多

ASP.NET读取EXCEL文件的三种经典方法

最近研究了ASP.NET如何高效读取EXCEL文件,现总结如下:

1.方法一:采用OleDB读取EXCEL文件:
把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下:
public DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
}
对于EXCEL中的表即sheet([sheet1$])如果不是固定的可以使用下面的方法得到
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
DataTable schemaTable = objConn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables,null);
string tableName=schemaTable.Rows[0][2].ToString().Trim();

另外:也可进行写入EXCEL文件,实例如下:
public void DSToExcel(string Path,DataSet oldds)
{
//先得到汇总EXCEL的DataSet 主要目的是获得EXCEL在DataSet中的结构
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+path1+";Extended Properties=Excel 8.0" ;
OleDbConnection myConn = new OleDbConnection(strCon) ;
string strCom="select * from [Sheet1$]";
myConn.Open ( ) ;
OleDbDataAdapter myCommand = new OleDbDataAdapter ( strCom, myConn ) ;
ystem.Data.OleDb.OleDbCommandBuilder builder=new OleDbCommandBuilder(myCommand);
//QuotePrefix和QuoteSuffix主要是对builder生成InsertComment命令时使用。
builder.QuotePrefix="["; //获取insert语句中保留字符(起始位置)
builder.QuoteSuffix="]"; //获取insert语句中保留字符(结束位置)
DataSet newds=new DataSet();
myCommand.Fill(newds ,"Table1") ;
for(int i=0;i<oldds.Tables[0].Rows.Count;i++)
{
//在这里不能使用ImportRow方法将一行导入到news中,因为ImportRow将保留原来DataRow的所有设置(DataRowState状态不变)。
在使用ImportRow后newds内有值,但不能更新到Excel中因为所有导入行的DataRowState!=Added
DataRow nrow=aDataSet.Tables["Table1"].NewRow();
for(int j=0;j<newds.Tables[0].Columns.Count;j++)
{
nrow[j]=oldds.Tables[0].Rows[i][j];
}
newds.Tables["Table1"].Rows.Add(nrow);
}
myCommand.Update(newds,"Table1");
myConn.Close();
}


2.方法二:引用的com组件:Microsoft.Office.Interop.Excel.dll 读取EXCEL文件
首先是Excel.dll的获取,将Office安装目录下的Excel.exe文件Copy到DotNet的bin目录下,cmd到该目录下,运行 TlbImp EXCEL.EXE Excel.dll 得到Dll文件。 点击此处下载此文件:/Files/songliang/DLL文件.rar
再在项目中添加引用该dll文件.

//读取EXCEL的方法 (用范围区域读取数据)
private void OpenExcel(string strFileName)
{
object missing = System.Reflection.Missing.Value;
Application excel = new Application();//lauch excel application
if (excel == null)
{
Response.Write("<script>alert('Can't access excel')</script>");
}
else
{
excel.Visible = false; excel.UserControl = true;
// 以只读的形式打开EXCEL文件
Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,
missing, missing, missing, true, missing, missing, missing, missing, missing);
//取得第一个工作薄
Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);

//取得总记录行数 (包括标题列)
int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
//int columnsint = mySheet.UsedRange.Cells.Columns.Count;//得到列数

//取得数据范围区域 (不包括标题列)
Range rng1 = ws.Cells.get_Range("B2", "B" + rowsint); //item

Range rng2 = ws.Cells.get_Range("K2", "K" + rowsint); //Customer
object[,] arryItem= (object[,])rng1.Value2; //get range's value
object[,] arryCus = (object[,])rng2.Value2;
//将新值赋给一个数组
string[,] arry = new string[rowsint-1, 2];
for (int i = 1; i <= rowsint-1; i++)
{
//Item_Code列
arry[i - 1, 0] =arryItem[i, 1].ToString();
//Customer_Name列
arry[i - 1, 1] = arryCus[i, 1].ToString();
}
Response.Write(arry[0, 0] + " / " + arry[0, 1] + "#" + arry[rowsint - 2, 0] + " / " + arry[rowsint - 2, 1]);
}
excel.Quit(); excel = null;
Process[] procs = Process.GetProcessesByName("excel");

foreach (Process pro in procs)
{
pro.Kill();//没有更好的方法,只有杀掉进程
}
GC.Collect();
}

3.方法三:将EXCEL文件转化成CSV(逗号分隔)的文件,用文件流读取(等价就是读取一个txt文本文件)。
先引用命名空间:using System.Text;和using System.IO;
FileStream fs = new FileStream("d:\\Customer.csv", FileMode.Open, FileAccess.Read, FileShare.None);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.GetEncoding(936));

string str = "";
string s = Console.ReadLine();
while (str != null)
{ str = sr.ReadLine();
string[] xu = new String[2];
xu = str.Split(',');
string ser = xu[0];
string dse = xu[1]; if (ser == s)
{ Console.WriteLine(dse);break;
}
} sr.Close();

另外也可以将数据库数据导入到一个txt文件,实例如下:

//txt文件名
string fn = DateTime.Now.ToString("yyyyMMddHHmmss") + "-" + "PO014" + ".txt";

OleDbConnection con = new OleDbConnection(conStr);
con.Open();
string sql = "select ITEM,REQD_DATE,QTY,PUR_FLG,PO_NUM from TSD_PO014";
//OleDbCommand mycom = new OleDbCommand("select * from TSD_PO014", mycon);
//OleDbDataReader myreader = mycom.ExecuteReader(); //也可以用Reader读取数据
DataSet ds = new DataSet();
OleDbDataAdapter oda = new OleDbDataAdapter(sql, con);
oda.Fill(ds, "PO014");
DataTable dt = ds.Tables[0];

FileStream fs = new FileStream(Server.MapPath("download/" + fn), FileMode.Create, FileAccess.ReadWrite);
StreamWriter strmWriter = new StreamWriter(fs); //存入到文本文件中

//把标题写入.txt文件中
//for (int i = 0; i <dt.Columns.Count;i++)
//{
// strmWriter.Write(dt.Columns[i].ColumnName + " ");
//}

foreach (DataRow dr in dt.Rows)
{
string str0, str1, str2, str3;
string str = "|"; //数据用"|"分隔开
str0 = dr[0].ToString();
str1 = dr[1].ToString();
str2 = dr[2].ToString();
str3 = dr[3].ToString();
str4 = dr[4].ToString().Trim();
strmWriter.Write(str0);
strmWriter.Write(str);
strmWriter.Write(str1);
strmWriter.Write(str);
strmWriter.Write(str2);
strmWriter.Write(str);
strmWriter.Write(str3);
strmWriter.WriteLine(); //换行
}
strmWriter.Flush();
strmWriter.Close();
if (con.State == ConnectionState.Open)
{
con.Close();
}

分享到:
评论

相关推荐

    三种ASP.NET读取Excel文件的方法浅析(含完整代码)

    ### ASP.NET读取Excel文件的方法浅析 #### 方法一:使用OleDB读取Excel文件 **概述** 本文档介绍了一种通过OleDB访问Excel文件的方式,将其作为数据源来读取其中的数据。这种方法适用于Excel文件版本为97至2003...

    asp.net读取Excel文件并显示

    以上就是关于“ASP.NET读取Excel文件并显示”的详细介绍。在实际开发中,你可能需要根据具体需求进行调整,例如处理异常、优化性能、支持不同版本的Excel文件等。希望这个指南能为你提供一个良好的起点。

    EXCEL讀取(ASP.NET)

    在本文中,我们将深入探讨如何在ASP.NET环境中利用OLEDB技术来读取Excel文件,无论是XLS格式还是XLSX格式,并将数据加载到DataTable对象中。这是一项基础但非常实用的技术,对于需要处理大量Excel数据的Web应用程序...

    asp.net生成Excel文件

    为了在ASP.NET中生成Excel文件,我们可以使用多种方法,包括但不限于Microsoft Office Interop库、第三方库如EPPlus、NPOI等,以及HTML表格转换。 1. **Microsoft Office Interop**:这是微软提供的一个接口,可以...

    ASP.NET中读取excel内容,并显示在界面上

    在这个场景中,我们需要探讨的是如何在ASP.NET中读取Excel文件的内容,并将其显示在用户界面上。这通常涉及到文件上传、Excel数据处理以及前端展示等多个环节。 首先,用户界面上需要有一个文件上传控件,允许用户...

    asp.net 访问Excel文件源码

    以EPPlus为例,你可以用以下方式读取Excel文件: ```vb.net Imports OfficeOpenXml Public Class ExcelAccess Public Sub ReadExcelFileWithEPPlus(ByVal filePath As String) Using package As New Excel...

    asp.net 2.0读取Excel文件的Demo

    附件中包含一个asp.net 2.0读取Excel文件的Demo。流程:首先将客户端的excel文件上传到服务器端,然后返回excel文件的保存路径,最后读取服务器端的excel文件,并在gridview中显示。

    ASP.NET读取EXCEL文件,很好的开发小技巧

    在ASP.NET中,读取Excel文件是一个常见的任务,特别是在数据导入、数据分析或报表生成等场景。这个开发小技巧主要涉及到如何使用.NET Framework提供的组件来处理Excel文件,而无需安装Microsoft Office。下面将详细...

    .NET读取Excel文件的三种方法的区别

    ASP.NET读取Excel文件方法一:采用OleDB读取Excel文件: 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: 代码如下:public DataSet ExcelToDS(string Path) { string strConn = “Provider=Microsoft...

    asp.net+Ajax实现Excel文件导出

    本篇文章将详细讲解如何利用ASP.NET与Ajax技术实现在Web应用中导出Excel文件。 首先,ASP.NET是Microsoft开发的一个用于构建动态网站、Web应用程序和服务的框架。它基于.NET Framework,提供了丰富的服务器控件、...

    asp.net操作读取excel的两种方法

    这篇博客“asp.net操作读取excel的两种方法”介绍了两种不同的方法来处理Excel文件,分别是使用Microsoft Office Interop库和使用开源库如EPPlus。这两种方法各有优缺点,下面将详细阐述。 1. **Microsoft Office ...

    用ASP.NET读取读取EXCEL中的数据到WEB页面

    在ASP.NET中,读取Excel数据并将其展示在Web页面上是常见的需求,尤其是在数据分析、报表展示或数据导入等场景中。本项目提供了一种实现方法,包括完整的项目代码和说明,帮助开发者快速理解并应用到自己的项目中。 ...

    c# asp.net 与 excel文件转换

    在IT行业中,C# ASP.NET 是一种常用的Web应用程序开发框架,而Excel文件处理则是常见的数据管理任务。这篇教程主要关注如何使用C# ASP.NET来实现Excel文件的导入和导出功能,这对于初学者来说是非常实用的知识点。 ...

    Asp.net 导出Excel文件总结(导出csv、Office COM组建、Jet OLEDB、NPOI)

    在Asp.net开发中,有时候我们需要将数据导出到Excel文件以便用户下载或者进行进一步的数据处理。本篇文章将总结四种常见的导出Excel的方法:导出CSV文件、使用Office COM组件、利用Jet OLEDB以及使用NPOI库。 1. **...

    asp.net导入excel文件到sqlserver数据库

    总结,ASP.NET导入Excel文件到SQL Server数据库涉及的关键技术包括ADO.NET数据访问、Excel Interop或第三方库的使用、数据库操作以及前端交互。这个过程需要注意服务器环境的限制、数据的验证与清洗、性能优化以及...

    asp.net 导入Excel文件

    在ASP.NET中,导入Excel文件是一项...总之,在ASP.NET中导入Excel文件涉及文件上传、选择合适的库来读取Excel数据,以及后续的数据处理和验证。通过理解这些关键步骤,你可以构建一个功能强大且灵活的Excel导入系统。

    asp.net读取excel文件的三种方法示例

    方法一:采用OleDB读取Excel文件 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: 代码如下:public DataSet ExcelToDS(string Path) { string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;” +”...

    Asp.net操作Excel

    而“Asp.net操作Excel”这一主题,主要是指在Asp.NET环境下对Microsoft Excel文件进行读取、写入、编辑等操作的技术。 在Asp.NET中操作Excel,通常涉及以下知识点: 1. **Interop服务**:早期,开发者会使用...

    asp.net 导出数据与图片到excel

    在.NET框架中,ASP.NET是一种常用的Web应用程序开发技术,它提供了丰富的功能来处理各种复杂的Web应用需求。在标题“asp.net 导出数据与图片到excel”和描述中提到的,是关于如何在ASP.NET环境下将数据和图片导出到...

    asp.net使用npoi读取excel模板并导出下载详解

    在***中使用NPOI读取Excel模板并导出下载的详细过程涉及到多个知识点,包括对NPOI库的理解、Excel文件的读写操作、以及*** Web应用程序中的文件处理。下面将详细介绍这些内容。 ### 1. NPOI库简介 NPOI是一个开源的...

Global site tag (gtag.js) - Google Analytics