zoukankan      html  css  js  c++  java
  • c# 一个通过oledb读取excel,csv的类

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data;
    using System.Data.OleDb;
    
    namespace SyncCardService
    {
        public class ExcelReader
        {
            private string filePath;
            private string fileName;
            private OleDbConnection conn;
            private DataTable readDataTable;
            private string connString;
            private FileType fileType = FileType.noset;
    
            public ExcelReader()
            {
                
            }
    
            private void SetFileInfo(string path)
            {
                filePath = path;
    
                fileName = this.filePath.Remove(0, this.filePath.LastIndexOf("\\") + 1);
                switch (fileName.Split('.')[1])
                {
                    case "xls": connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; fileType = FileType.xls;
                        break;
                    case "xlsx": connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"; fileType = FileType.xlsx;
                        break;
                    case "csv": connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath.Remove(filePath.LastIndexOf("\\") + 1) + ";Extended Properties='Text;FMT=Delimited;HDR=YES;'"; fileType = FileType.csv;
                        break;
                }
            }
    
    
            public DataTable ReadFile(string path)
            {
                if (System.IO.File.Exists(path))
                {
                    SetFileInfo(path);
                    OleDbDataAdapter myCommand = null;
                    DataSet ds = null;
    
                    using (conn = new OleDbConnection(connString))
                    {
                        conn.Open();
    
                        DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    
                        string tableName = fileType == FileType.csv ? fileName : schemaTable.Rows[0][2].ToString().Trim();
    
                        string strExcel = string.Empty;
    
                        strExcel = "Select   *   From   [" + tableName + "]";
                        myCommand = new OleDbDataAdapter(strExcel, conn);
    
                        ds = new DataSet();
    
                        myCommand.Fill(ds, tableName);
    
                        readDataTable = ds.Tables[0];
    
                    }
                }
                return readDataTable;
            }
    
            private enum FileType
            {
                noset,
                xls,
                xlsx,
                csv
            }
    
        }
    }
    


  • 相关阅读:
    nginx配置vue项目
    TexturePacker工具对素材打包
    java使用动态链接库
    java.lang.UnsatisfiedLinkError: no A in java.library.path
    pi4j与Spring Boot
    迪文屏串口修改数据
    迪文屏常用串口指令
    postcss-px-to-viewport移动端布局
    vue-lazyload延迟加载
    fastclick延迟300ms
  • 原文地址:https://www.cnblogs.com/hanwest/p/2881887.html
Copyright © 2011-2022 走看看