读取EXCEL的方法(用范围区域读取数据)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Diagnostics;
using Microsoft.Office.Interop.Excel;
using System.Data.OleDb;
using System.Diagnostics;

private void OpenExcel(string strFileName)
        {
            object missing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();//启动Excel应用程序
            if (excel == null)
            {
                System.Web.HttpContext.Current.Response.Write("<script>alert(‘Can‘t access excel‘)</script>");
            }
            else
            {
                excel.Visible = false;//对象是否可见
                excel.UserControl = true;//如果应用程序可见或者由用户创建或启动,则为true。 如果您使用CreateObject或GetObject函数以编程方式创建或启动应用程序,并且隐藏应用程序,则为False。

                #region 以只读的形式打开EXCEL文件
                ///Workbook: 代表一个Microsoft Excel工作簿。
                ///Workbook Open方法打开一个打开一个工作簿。
                ///参数表:
                ///string Filename:文件名,要打开的工作簿的文件名。
                ///object UpdateLinks = Type.Missing:可选对象。指定文件中链接的更新方式。如果省略此参数,则会提示用户指定如何更新链接。否则,该参数是下表中列出的值之一。如果Microsoft Excel以WKS,WK1或WK3格式打开文件,并且UpdateLinks参数是2,Microsoft Excel将从附加到该文件的图表生成图表。如果参数为0,则不创建图表。
                ///object ReadOnly = Type.Missing:可选对象。如果是以只读模式打开工作簿。
                ///object Format = Type.Missing:可选对象。如果Microsoft Excel正在打开文本文件,则此参数将指定分隔符,如下表所示。如果省略此参数,则使用当前分隔符。
                ///object Password = Type.Missing:可选对象。包含打开受保护工作簿所需密码的字符串。如果省略此参数并且工作簿需要密码,则会提示用户输入密码。
                ///object WriteResPassword = Type.Missing:可选对象。包含写入写保护工作簿所需密码的字符串。如果省略此参数并且工作簿需要密码,则会提示用户输入密码。
                ///object IgnoreReadOnlyRecommended = Type.Missing:可选对象。如果Microsoft Excel不显示只读推荐消息(如果工作簿是使用“只读推荐”选项保存的),则为真。
                ///object Origin = Type.Missing:可选对象。如果该文件是一个文本文件,则该参数指示它来自何处(以便代码页和回车/换行符(CR / LF)可以正确映射)。可以是以下Microsoft.Office.Interop.Excel.XlPlatform常量之一:xlMacintosh,xlWindows或xlMSDOS。如果省略此参数,则使用当前的操作系统。
                ///object Delimiter = Type.Missing:可选对象。如果该文件是一个文本文件,并且Format参数是6,则该参数是一个字符串,它指定要用作分隔符的字符。例如,使用Chr(9)作为制表符,使用“,”作为逗号,使用“;”分号,或使用自定义字符。只使用字符串的第一个字符。
                ///object Editable = Type.Missing:可选对象。如果该文件是Microsoft Excel 4.0加载项,则此参数为True以打开加载项,以便它是一个可见的窗口。如果此参数为False或省略,加载项被打开为隐藏,并且它不能被隐藏。此选项不适用于在Microsoft Excel 5.0或更高版本中创建的加载项。如果该文件是Excel模板,请使用True为打开指定的模板进行编辑或False以基于指定的模板打开新的工作簿。默认值是False。
                ///object Notify = Type.Missing:可选对象。如果无法以读/写模式打开文件,则该参数为True,将文件添加到文件通知列表中。 Microsoft Excel将以只读方式打开文件,轮询文件通知列表,然后在文件变得可用时通知用户。如果此参数为False或省略,则不会请求通知,并且任何尝试打开不可用的文件都将失败。
                ///object Converter = Type.Missing:可选对象。打开文件时第一个文件转换器的索引。首先尝试指定的文件转换器;如果此转换器不能识别该文件,则尝试所有其他转换器。转换器索引由Microsoft.Office.Interop.Excel._Application.this [System.Object,System.Object]属性返回的转换器的行号组成。
                ///object AddToMru = Type.Missing:可选对象。如果要将此工作簿添加到最近使用的文件列表中,则为true。默认值为False。
                ///object Local = Type.Missing:可选对象。 True将文件保存为Microsoft Excel的语言(包括控制面板设置)。 False(默认值)将文件保存为Visual Basic for Applications(VBA)(通常为UU),除非WorkbeniesOpen运行的VBA项目是旧的国际化XL5 / 95 VBA项目。
                ///object CorruptLoad = Type.Missing:可选对象。 可以是以下常量之一:xlNormalLoad,xlRepairFile,和xlExtractData。 如果没有指定值,默认行为通常是正常的,但如果Excel已经尝试打开文件,则可能是安全加载或数据恢复。 第一次尝试是正常的。 如果Excel在打开文件时停止运行,则第二次尝试是安全加载。 如果Excel再次停止运行,则下一次尝试是数据恢复。
                #endregion
                Workbook wb = excel.Application.Workbooks.Open(strFileName, missing, true, missing, missing, missing,missing, missing, missing, true, missing, missing, missing, missing, missing);

                #region 取得第1个工作薄
                ///Worksheets:返回一个代表指定工作簿中所有工作表的Microsoft.Office.Interop.Excel.Sheets集合。 只读表格对象。
                #endregion
                Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);

                #region 取得总记录行数(包括标题列)
                ///UsedRange:返回一个Microsoft.Office.Interop.Excel.Range对象,该对象表示指定工作表上使用的范围。 只读。
                ///Cells:返回一个Range对象,它表示指定范围内的单元格。
                ///Rows返回表示指定范围内的行的Microsoft.Office.Interop.Excel.Range对象。
                ///Count:返回集合中的对象数量。
                #endregion
                int rowsint = ws.UsedRange.Cells.Rows.Count; //得到行数
                int columnsint = ws.UsedRange.Cells.Columns.Count;//得到列数

                //取得数据范围区域 (不包括标题列)
                //Range:表示单元格、行、列、包含一个或多个相邻单元格块或三维范围的单元格的选择。
                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;   //获取范围的值
                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();
                }
                System.Web.HttpContext.Current.Response.Write(arry[0, 0] + " / " + arry[0, 1] + "#" + arry[rowsint - 2, 0] + " / " + arry[rowsint - 2, 1]);
            }
            excel.Quit(); excel = null;//退出Microsoft Excel

            System.Diagnostics.Process[] procs = System.Diagnostics.Process.GetProcessesByName("excel");

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

  

引用:

时间: 2024-11-13 08:09:09

读取EXCEL的方法(用范围区域读取数据)的相关文章

java自定义jar包读取Excel(包含2003和2007)数据,并举例说明

用java自定义jar包读取excel数据支持excel2007和excel2003 在http://download.csdn.net/detail/u010792467/8079355下载所需要的包 如果需要excel2003和excel2007文件可以去 http://download.csdn.net/detail/u010792467/8072009下载 在http://download.csdn.net/detail/u010792467/8079345下载工程 自定义jar包运用举

C#读取Excel的其中一种方式OleDb读取(100万条)--快速大量插入SQL中

主要运用表类型 1 Create table BulkTestTable( 2 Id nvarchar(32), 3 UserName nvarchar(32), 4 Pwd nvarchar(32) 5 ) 6 Go 7 CREATE TYPE BulkUdt AS TABLE 8 (Id nvarchar(32), 9 UserName nvarchar(32), 10 Pwd nvarchar(32) ) C#端读取Excel /// <summary> /// 读取Excel中数据 /

java读取excel文件内容,并将读取到的内容写入到另一文件中

需要导入的jar包下载地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 代码:ReadExcel.java //信1605-3 20163432 张运涛 package domain; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cell; import jxl.CellType; import jxl.Sh

C# 读取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;"; OleDb

C# 读取EXCEL文件

1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended P

C#读取excel等表格常用方法

0. 利用NPOI. 请查阅此插件的相关文档. 1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 public DataSet ExcelToDS(string Path) { string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +"

[Windows问题-4] C#读取excel文件

问题:使用C#程序读取excel文件,包括后缀为.xls和.xlsx 相信很多朋友都有在程序中读取excel文件的需求,我在调研的过程中也看了很多文章,基本思路都是正确的,但是有一些代码是没有通过验证的,在实际操作的过程中总会遇到一些问题,经过摸索,最终总结出一套可行的方案,在这里跟大家分享. 读取Excel的方法有多种,我这里选择了一种效率较高的方法,将读取出来的数据存放到一个DataSet之中. 代码如下: using System; using System.Collections.Gen

OLDB读取excel的数据类型不匹配的解决方案(ZT)

1 引言  在应用程序的设计中,经常需要读取Excel数据或将Excel数据导入转换到其他数据载体中,例如将Excel数据通过应用程序导入SQL Sever等数据库中以备使用.笔者在开发“汽车产业链ASP协同商务平台”中遇到了类似需求.某汽车整车生产企业需要将其车辆发车信息发布到汽车产业链平台上去,其数据为内部ERP系统生成的Excel数据表,用户首先将该数据表上传至汽车产业链平台,平台将此Excel数据读取导入到平台内部的SQL Sever数据库中,以供其它应用使用.汽车产业链平台的开发使用的

C# 读取EXCEL

private Stopwatch wath = new Stopwatch(); /// <summary> /// 使用COM读取Excel /// </summary> /// <param name="excelFilePath">路径</param> /// <returns>DataTabel</returns> public System.Data.DataTable GetExcelData(str