资源简介
2012,我的C#全能Excel操作(无需Office,不使用XML)
有时候,Excel操作会成为我们程序员的痛处。
COM的方式处理?杀进程?需要安装Office?
No,nononono!这些都不想了。
我只要OleDb就够用了。
读取内容产生DataSet? 没问题!
创建Excel文件? 没问题!
在Excel文件中创建Sheet? 没问题!
我要取出Excel文件中的所有表名? 没问题!
我要以索引来操作Sheet,不是名字行不? 没问题!
导出的数据太多,要分开多个Sheet放,行不? 没问题!
我要再扩展,可不可以? 代码都给你了,你说呢?
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.IO;
namespace Core.DarrenExcelHelper
{
///
/// 描述:對Excel文件的創建表、讀取、寫入數據操作.
/// 程序員:谢堂文(Darren Xie)
/// 創建日期:
/// 版本:1.0
///
public static class MyExcelUtls
{
#region 取文件的擴展名
///
/// 取文件的擴展名
///
/// 文件名稱
/// string
public static string GetExtFileTypeName(string FileName)
{
string sFile = FileName;// myFile.PostedFile.FileName;
sFile = sFile.Substring(sFile.LastIndexOf(“\\“) + 1);
sFile = sFile.Substring(sFile.LastIndexOf(“.“)).ToLower();
return sFile;
}
#endregion
#region 檢查一個文件是不是2007版本的Excel文件
///
/// 檢查一個文件是不是2007版本的Excel文件
///
/// 文件名稱
/// bool
public static bool IsExcel2007(string FileName)
{
bool r;
switch (GetExtFileTypeName(FileName))
{
case “.xls“:
r = false;
break;
case “.xlsx“:
r = true;
break;
default:
throw new Exception(“你要檢查“ + FileName + “是2007版本的Excel文件還是之前版本的Excel文件,但是這個文件不是一個有效的Excel文件。“);
}
return r;
}
#endregion
#region Excel的連接串
//Excel的連接串
//2007和之前的版本是有區別的,但是新的可以讀取舊的
///
/// Excel文件在服務器上的OLE連接字符串
///
/// Excel文件在服務器上的路徑
/// 第一行不是標題:true;第一行是標題:false;
/// String
public static String GetExcelConnectionString(string excelFile bool no_HDR)
{
try
{
if (no_HDR)
{
if (IsExcel2007(excelFile))
{
return “Provider=Microsoft.Ace.OleDb.12.0;“ + “data source=“ + excelFile + “;Extended Properties=‘Excel 12.0; HDR=NO; IMEX=1‘“; //此连接可以操作.xls与.xlsx文件
}
else
{
return “Provider=Microsoft.Jet.OleDb.4.0;“ + “data source=“ + excelFile + “;Extended Properties=‘Excel 8.0; HDR=NO; IMEX=1‘“; //此连接只能操作Excel2007之前(.xls)文件
}
}
else
{
return GetExcelConnectionString(excelFile);
}
}
catch (Exception ee)
{
throw new Exception(ee.Message);
}
}
///
//
评论
共有 条评论