LINQ是Visual Studio 2008及其以后版本中提供的功能,将强大的查询扩展到C#和VB.NET语言语法之中。LINQ提供了标准、简单的模式来查询和更新数据,同时还允许程序开发人员进行扩展,支持任何类型的数据存储。Visual Studio 2008包含了LINQ提供者程序集,能够对.NET Framework集合,内存中的对象数组,SQL Server数据库,ADO.NET Dataset和XML文档进行语言集成的查询。另外,我们也可以自己编写LINQ提供者,提供对任何类型数据的查询,只要实现了IEnumerable或者IEnumerable<T> (C#)或 IEnumerable (Of T) (Visual Basic)的数据类型,都可以进行使用LINQ进行操作。我们可以使用完全相同的语法查询SQL数据库、XML文档、ADO.NET的Dataset(DataTable)、内存中的集合对象,以及任何支持LINQ的远程或者本地数据源。在LINQ查询中,只与对象打交道,因此,可以完全不需要知道数据存储的数据源,而且采用的编程模型和语法也完全相同。
所有的LINQ查询基本上都是由3个基本的操作组成:得到数据源,创建查询和执行查询3个过程。数据的获得是在执行查询的时候完成的。在上一部分的例子(http://blog.csdn.net/net_lover/archive/2008/01/23/2060425.aspx)中,
NorthWindDataContext NorthWind = new NorthWindDataContext();
是得到数据源
var query = from c in NorthWind.Customers where c.Country == "USA" select new { c.Country, c.CompanyName };
是创建查询,此时并没有对数据执行任何操作,
GridView2.DataSource = query;
GridView2.DataBind();
在数据绑定时,才真正得到数据。
但是,有的查询需要立即执行,将结果放在内存中,可以调用查询或者查询变量的ToList<(Of <TSource>)> 或者 ToArray<(Of <TSource>)>方法。例如:
var query2 = from c in NorthWind.Customers where c.Country == "USA" select new { c.Country, c.CompanyName };
var query3 = query2.ToList();
好,既然说LINQ可以查询任何类型的数据,下面,咱们就试试如何查询一个Excel文件(说明:本程序在Excel 2003下今天测试的,在Excel2007中可能更简单,不过没有测试。运行本程序可能需要采用模拟或者调整Excel.exe的权限,另外注意:使用之前需要引用COM:Microsoft Office 11.0 Object Library
如果引用列表中没有,需要自行添加 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE)。
1,先准备一个Book1.xls,文件内容如下(将下面的XML文件在Excel里打开,另存为Book1.xls即可):
<?xml version="1.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>zhy</Author>
<LastAuthor>zhy</LastAuthor>
<Created>2008-01-25T13:13:34Z</Created>
<LastSaved>2008-01-26T13:10:56Z</LastSaved>
<Version>11.9999</Version>
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>13050</WindowHeight>
<WindowWidth>16020</WindowWidth>
<WindowTopX>0</WindowTopX>
<WindowTopY>105</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Center"/>
<Borders/>
<Font ss:FontName="宋体" x:CharSet="134" ss:Size="12"/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
</Styles>
<Worksheet ss:Name="Sheet1">
<Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="21" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25">
<Column ss:Index="3" ss:AutoFitWidth="0" ss:Width="102"/>
<Column ss:AutoFitWidth="0" ss:Width="263.25"/>
<Column ss:AutoFitWidth="0" ss:Width="246.75"/>
<Row ss:Index="2">
<Cell ss:Index="2"><Data ss:Type="String">Category</Data></Cell>
<Cell><Data ss:Type="String">CategoryID</Data></Cell>
<Cell><Data ss:Type="String">CategoryName</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="String">ASP.NET</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">8</Data></Cell>
<Cell><Data ss:Type="String">VB.NET</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">9</Data></Cell>
<Cell><Data ss:Type="String">Visual C#</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">11</Data></Cell>
<Cell><Data ss:Type="String">XML/XSL</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">6</Data></Cell>
<Cell><Data ss:Type="String">Web Services</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">12</Data></Cell>
<Cell><Data ss:Type="String">.NET FAQs</Data></Cell>
</Row>
<Row ss:Index="16">
<Cell ss:Index="2"><Data ss:Type="String">Article</Data></Cell>
<Cell><Data ss:Type="String">CategoryID</Data></Cell>
<Cell><Data ss:Type="String">Title</Data></Cell>
<Cell><Data ss:Type="String">Guid</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="String">ASP.NET2.0中将文件上传到数据库 </Data></Cell>
<Cell><Data ss:Type="String">17612afb-3fc0-4fb9-bfa9-00cba28336e9</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="String">不经保存,直接读取上传文件的内容 </Data></Cell>
<Cell><Data ss:Type="String">78280914-a75c-40dc-9dac-322b3d81be35</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">1</Data></Cell>
<Cell><Data ss:Type="String">一次编辑 GridView 的所有行 </Data></Cell>
<Cell><Data ss:Type="String">a933b187-06c3-4263-9eec-414a54d9c815</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">11</Data></Cell>
<Cell><Data ss:Type="String">创建、查询、修改带名称空间的 XML 文件的例子</Data></Cell>
<Cell><Data ss:Type="String">7b4c7a42-4cdf-40d1-b293-e86da109a34c</Data></Cell>
</Row>
<Row>
<Cell ss:Index="3"><Data ss:Type="Number">11</Data></Cell>
<Cell><Data ss:Type="String">用XSL把XML的数据转换成完美的多列表格形式</Data></Cell>
<Cell><Data ss:Type="String">yawo3qgm-xd53-4d3d-oybr-blsbx5bngaym</Data></Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<Print>
<ValidPrinterInfo/>
<PaperSizeIndex>9</PaperSizeIndex>
<HorizontalResolution>200</HorizontalResolution>
<VerticalResolution>200</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>6</ActiveRow>
<ActiveCol>2</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet2">
<Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Sheet3">
<Table ss:ExpandedColumnCount="0" ss:ExpandedRowCount="0" x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="54" ss:DefaultRowHeight="14.25"/>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
2,创建aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LinqExcel.aspx.cs" Debug="true"
Inherits="LinqExcel" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>LINQ to Excel</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" CellPadding="4">
<Columns>
<asp:HyperLinkField DataNavigateUrlFields="CategoryID" Target="_blank"
DataNavigateUrlFormatString="http://dotnet.aspx.cc/ShowList.aspx?id={0}"
HeaderText="栏目" DataTextField="CategoryName" DataTextFormatString="【{0}】" />
<asp:HyperLinkField DataNavigateUrlFields="ArticleGuid" Target="_blank"
DataNavigateUrlFormatString="http://dotnet.aspx.cc/article/{0}/read.aspx"
HeaderText="文章标题" DataTextField="ArticleTitle" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>
3,编写代码文件:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using
分享到:
相关推荐
2. **使用EPPlus读取Excel文件** EPPlus提供了一个ExcelPackage类,我们可以用它来打开Excel文件并创建一个Excel工作簿对象。例如: ```csharp using OfficeOpenXml; ... FileInfo fileInfo = new FileInfo(...
2. Excel文件(.xlsx): - 文件结构:基于Open XML标准,由一系列XML文档组成,存储在ZIP容器中。 - 功能:提供强大的表格、图表、公式计算等功能,适合数据处理、数据分析和报告生成。 - 开发者访问:C#中可以...
asp.net mvc 上传excel文件并读取excle内容转成DataTable(Spire.Office.3.6.0) 一个需求:将一个Excel文件中的数据导入到数据库中去。 思路:上传一个excel文件,读取该excel文件中数据,转成DataTable(或List),...
- **资源管理**:使用完Excel对象后,确保正确释放资源,防止内存泄漏。 - **性能优化**:大量数据操作时,考虑使用批量写入或异步处理,以提高性能。 综上所述,"C# 读取XML文件并写入Excel表格"这一主题涵盖了...
综上所述,从C#中的实体模型使用LINQ导出数据到Excel,涉及到了数据库操作、数据查询、对象关系映射、Excel文件操作等多个技术层面。实践中,开发者可以根据具体需求和项目环境选择合适的方法来实现这一功能。
文件内容较多的时候请使用异步Delegate的功能完成转换功能。...查询的结果显示在ListBox中,结果可存入另一个Excel文件中,文件名可由用户指定。使用Regex检查Email和学号的合法性(写入Xml、查询时)。
使用Excel Interop,你可以创建一个Excel应用程序实例,打开Excel文件,然后将工作簿对象添加到WinForm控件中显示。 2. WinForm控件: WinForm提供了一种名为`AxHost`的控件,它可以用来承载ActiveX组件。因为...
这里使用的开发工具是Visual Studio 2010,它支持.NET Framework 4.0,这使得我们可以利用Microsoft Office Interop库来操作Excel文件。 首先,确保你的系统已经安装了Microsoft Office或者Microsoft Access ...
最后,使用`Save()`方法将工作簿保存为Excel文件。 ```csharp workbook.Save("output.xlsx"); ``` 以上就是利用C#和Aspose将XML文件数据写入Excel的基本流程。这个过程中,你可以根据实际需求进行数据清洗、格式化...
- 使用`OleDbConnection`类创建一个与Excel文件的连接。这里使用了旧的Jet 4.0提供程序(`Microsoft.Jet.OLEDB.4.0`),适用于读取Excel 97-2003格式的文件。连接字符串包含了文件的完整路径和Excel的特定属性。 ...
在.NET开发环境中,使用GridView控件生成Excel文件是一种常见的数据导出方法,尤其适用于Web应用程序。GridView能够方便地展示数据库中的数据,并且可以被轻松地转换为Excel格式,供用户下载。下面我们将深入探讨...
这个组件用起来简单、实用、操作方便,而且结合了Linq的查询特性,excel版本不仅支持2003,而且连wps表格都支持(后缀名为.et),csv文件更不在话下了。项目地址:https://github.com/paulyoder/LinqToExcel在使用之前:...
总结来说,***结合LINQ技术导出数据到Excel的实现原理是:通过LINQ查询数据库并获取数据,利用***的页面处理机制,将数据写入HTTP响应流中,并通过设置合适的HTTP响应头,使浏览器能够识别并下载为Excel文件。...
2. **读取Excel文件:** 使用`Microsoft.Office.Interop.Excel`时,首先需要引用该库,然后创建一个Excel应用实例,打开工作簿对象,接着访问工作表,最后读取单元格的数据。例如: ```csharp using Excel = ...
在本篇文章中,我们将深入探讨如何使用C#和Ado.NET来读取Excel文件,这对于处理大量结构化的数据非常有用。 首先,要读取Excel文件,我们需要一个能够处理Excel文件的数据提供者。在Ado.NET中,没有内置的专门用于...
2. **读取Excel文件**:通过`Microsoft.Office.Interop.Excel`创建Excel应用程序实例,打开工作簿,获取所需的工作表,并读取数据。 ```csharp using Excel = Microsoft.Office.Interop.Excel; Excel.Application ...
对于Excel文件,我们使用`EPPlus`或`NPOI`。这里我们以`EPPlus`为例,处理.xlsx文件: ```csharp using OfficeOpenXml; using System.Collections.Generic; using System.Data; using System.IO; // 读取Excel文件...
- LINQ 可以与 COM 对象一起工作,例如通过 Excel COM 对象访问 Excel 文件中的数据。 - 示例代码: ```csharp var excelApp = new Excel.Application(); var workBook = excelApp.Workbooks.Open(filePath); ...
开源的读取Excel文件组件-ExcelDataReader 读取xml的四种方式开源的读取Excel文件组件-ExcelDataReader 读取xml的四种方式开源的读取Excel文件组件-ExcelDataReader 读取xml的四种方式开源的读取Excel文件组件-...