into esp each lin 制表符 response 取得数据 程序 lms
- 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();
- }
引用:
读取EXCEL的方法(用范围区域读取数据)
into esp each lin 制表符 response 取得数据 程序 lms
原文:http://www.cnblogs.com/wangxingzhou/p/7810201.html
来源: http://www.bubuko.com/infodetail-2387604.html