GetExcelData.cs - html/css语言栏目:html.css - 自学php

using System;
using System.Collections.Generic;// List
using System.Data;
using System.Data.OleDb;
using System.Diagnostics;// Process
using System.IO;
using System.Reflection;// Missing.Value
using System.Text.RegularExpressions;// Regex
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ExcelCOM = Microsoft.Office.Interop.Excel;// 启用 Excel 组件

/*/--------------------------------------------------------------------------------//
// GetExcelData 的摘要说明

//--------------------------------------------------------------------------------/*/
public class GetExcelData : System.Web.UI.Page
{
	// 构造函数
	public GetExcelData()
	{
		killExcel();// 结束所有 Excel 进程
	}
	
	// 结束进程
	public bool killExcel()
	{
		try
		{
			Process[] myProcesses;
			myProcesses = Process.GetProcessesByName("Excel");
			// 结束所有 Excel 进程
			foreach(Process myProcess in myProcesses)
			{
				myProcess.Kill();
			}
			return true;
		}
		catch
		{
			return false;
		}
	}
	
	// 索引字符转数字
	public static int toIndex(string columnName)
	{
		int index = 0;
		
		// 格式检查
		if(!Regex.IsMatch(columnName, @"^[A-Za-z]+$"))
		{
			return -1;
		}
		char[] chars = columnName.ToUpper().ToCharArray();
		for (int i = 0; i < chars.Length; i++)
		{
			index += ((int)chars[i] - (int)'A' + 1) * (int)Math.Pow(26, chars.Length - i - 1);
		}
		
		return index - 1;
	}
	
	// 索引数字转字符
	public static string toColName(int index)
	{
		// 格式检查
		if(index < 0) return null;
		List
 
   chars = new List
  
   (); do { if(chars.Count > 0) index--; chars.Insert(0, ((char)(index % 26 + (int)'A')).ToString()); index = (int)((index - index % 26) / 26); } while (index > 0); return String.Join(string.Empty, chars.ToArray()); } // 从Excel导出到DataSet public DataSet getDataSet(string f_FilePath, string f_SheetName) { DataSet ds = new DataSet(); string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + f_FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"; try { OleDbConnection conn = new OleDbConnection(strConnect); OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + f_SheetName + "$]", strConnect); conn.Open(); oada.Fill(ds,f_SheetName + "$"); conn.Close(); } catch { } return ds; } // 从Excel导出到DataTable public System.Data.DataTable getDataTable(string f_FilePath, string f_SheetName) { System.Data.DataTable dt = new System.Data.DataTable(); string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + f_FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"; try { OleDbConnection conn = new OleDbConnection(strConnect); OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + f_SheetName + "$]", strConnect); conn.Open(); oada.Fill(dt); conn.Close(); } catch { } return dt; } // 获取指定编号表名 public string getSheetName(string f_FilePath,int f_SheetNum) { System.Data.DataTable dt = new System.Data.DataTable(); string sheetName = null; string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + f_FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"; try { OleDbConnection conn = new OleDbConnection(strConnect); conn.Open(); dt = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); conn.Close(); sheetName = dt.Rows[f_SheetNum][2].ToString(); } catch { } return sheetName.Substring(0,sheetName.Length-1); } // 统计表数 public int countSheet(string f_FilePath) { System.Data.DataTable dt = new System.Data.DataTable(); string strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + f_FilePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"; try { OleDbConnection conn = new OleDbConnection(strConnect); conn.Open(); dt = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); conn.Close(); } catch { } return dt.Rows.Count; } // 打开Excel public ExcelCOM.Worksheet openExcel(ExcelCOM.Application ExcelApp,string f_FilePath,string f_SheetName) { ExcelApp.Visible = false;// 后台执行 ExcelApp.DisplayAlerts = false;// 禁止弹出询问提示框 ExcelApp.AlertBeforeOverwriting = false;// 覆盖不提示 try { object oMissing = Missing.Value; ExcelCOM.Workbook myBook = ExcelApp.Workbooks.Open( f_FilePath, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing ); ExcelCOM.Worksheet mySheet = myBook.Sheets[f_SheetName] as ExcelCOM.Worksheet; return mySheet; } catch { closeExcel(ExcelApp,false); return null; } } // 关闭Excel public bool closeExcel(ExcelCOM.Application ExcelApp,bool isSave) { if (isSave) ExcelApp.Save(); ExcelApp.Quit(); System.GC.Collect(System.GC.GetGeneration(ExcelApp)); ExcelApp = null; if(!killExcel()) { return false; } return true; } // 读取单元格,行列从1开始 public string getCell(ExcelCOM.Worksheet f_Worksheet,int row,int col) { if ((row<=0)||(col<=0)){return null;} ExcelCOM.Range rangeCell = f_Worksheet.Cells[row,col] as ExcelCOM.Range; return rangeCell.Text.ToString(); } // 写入单元格,行列从1开始 public bool setCell(ExcelCOM.Worksheet f_Worksheet,int row,int col,string val) { if ((row<=0)||(col<=0)){return false;} ExcelCOM.Range rangeCell = f_Worksheet.Cells[row,col] as ExcelCOM.Range; // 判断合并单元格 int rowStart = (bool)rangeCell.MergeCells ? rangeCell.MergeArea.Row : row; int colStart = (bool)rangeCell.MergeCells ? rangeCell.MergeArea.Column : col; rangeCell = f_Worksheet.Cells[rowStart,colStart] as ExcelCOM.Range; rangeCell.Value = val; return true; } // 判断是否为合并单元格 public bool isMergeCell(ExcelCOM.Worksheet f_Worksheet,int row,int col) { if ((row<=0)||(col<=0)){return false;} ExcelCOM.Range rangeCell = (ExcelCOM.Range)f_Worksheet.Cells[row,col]; return (bool)rangeCell.MergeCells; } // 获取合并单元格跨行数 public int getMergeRow(ExcelCOM.Worksheet f_Worksheet,int row,int col) { if ((row<=0)||(col<=0)){return 0;} ExcelCOM.Range rangeCell = (ExcelCOM.Range)f_Worksheet.Cells[row,col]; return rangeCell.MergeArea.Rows.Count; } // 获取合并单元格跨列数 public int getMergeCol(ExcelCOM.Worksheet f_Worksheet,int row,int col) { if ((row<=0)||(col<=0)){return 0;} ExcelCOM.Range rangeCell = (ExcelCOM.Range)f_Worksheet.Cells[row,col]; return rangeCell.MergeArea.Columns.Count; } } 
  
 

返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册