C# 连接 读取 Excel

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Windows;
using System.Windows.Forms;

namespace MyProjectDAL
{
    public class ExcelDB
    {
        private OleDbConnection connection, connWithoutHDR;
        private string connectionString, connStringWithoutHDR;

        //构造函数
        public ExcelDB(string strExcelFileName)
        {
            string path = Application.ExecutablePath;
            FileInfo exeInfo = new FileInfo(path);
            path = exeInfo.DirectoryName + "\\";
            connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + "user data\\excel files\\" + strExcelFileName + ".xls;" + "Extended Properties='Excel 5.0;HDR=YES;'";
            connStringWithoutHDR = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + path + "user data\\excel files\\" + strExcelFileName + ".xls;" + "Extended Properties='Excel 5.0;HDR=NO;'";
            connection = new OleDbConnection(connectionString);
            connWithoutHDR = new OleDbConnection(connStringWithoutHDR);
        }

        //将excel文件内容读入DataTable
        public DataTable Excel2DataTable(int startLine, int endLine, string columns)
        {
            DataTable dt1 = new DataTable();
            DataTable dt2 = new DataTable();
            int readCount = 0;
            int i;
            try
            {
                string query = "select " + columns + " from [Sheet1$]";
                this.connWithoutHDR.Open();
                OleDbDataAdapter adapter = new OleDbDataAdapter(query, connWithoutHDR);
                adapter.Fill(dt1);
                connWithoutHDR.Close();
            }
            catch (OleDbException ex)
            {
                MessageBox.Show("Excel数据读取失败 ErrorCode: " + (ex.ErrorCode).ToString());
            }
            readCount = dt1.Rows.Count;
            if (readCount > endLine)
            {
                for (i = startLine - 1; i < endLine; i++)
                {
                    dt2.Rows.Add(dt1.Rows[i]);
                }
            }
            if (readCount >= startLine && readCount <= endLine)
            {
                for (i = startLine - 1; i < readCount; i++)
                {
                    dt2.Rows.Add(dt1.Rows[i]);
                }
            }
            return dt2;
        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_老杨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值