c# Excel轉換成DataSet

? ? ?/// <summary>
? ? ? ? /// Excel轉換成DataSet(.xlsx/.xls)
? ? ? ? /// </summary>
? ? ? ? /// <param name="filePath">Excel文件路徑</param>
? ? ? ? /// <param name="strMsg"></param>
? ? ? ? /// <returns></returns>
? ? ? ? public static DataSet ExcelToDataSet(string filePath, out string strMsg)
? ? ? ? {
? ? ? ? ? ? strMsg = "";
? ? ? ? ? ? DataSet ds = new DataSet();
? ? ? ? ? ? DataTable dt = new DataTable();
? ? ? ? ? ? string fileType = Path.GetExtension(filePath).ToLower();
? ? ? ? ? ? string fileName = Path.GetFileName(filePath).ToLower();
? ? ? ? ? ? try
? ? ? ? ? ? {
? ? ? ? ? ? ? ? ISheet sheet = null;
? ? ? ? ? ? ? ? int sheetNumber = 0;
? ? ? ? ? ? ? ? // 加載Excel文件
? ? ? ? ? ? ? ? using (FileStream fs = File.Open(filePath, FileMode.Open, FileAccess.Read))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? if (fileType == ".xlsx")
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? // 2007版本
? ? ? ? ? ? ? ? ? ? ? ? XSSFWorkbook workbook = new XSSFWorkbook(fs);
? ? ? ? ? ? ? ? ? ? ? ? sheetNumber = workbook.NumberOfSheets;
? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < sheetNumber; i++)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? string sheetName = workbook.GetSheetName(i);
? ? ? ? ? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheet(sheetName);
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (sheet != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt = GetSheetDataTable(sheet, out strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (dt != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt.TableName = sheetName.Trim();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ds.Tables.Add(dt);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //MessageBox.Show("Sheet數據獲取失敗,原因:" + strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? else if (fileType == ".xls")
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? // 2003版本
? ? ? ? ? ? ? ? ? ? ? ? HSSFWorkbook workbook = new HSSFWorkbook(fs);
? ? ? ? ? ? ? ? ? ? ? ? sheetNumber = workbook.NumberOfSheets;
? ? ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < sheetNumber; i++)
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? string sheetName = workbook.GetSheetName(i);
? ? ? ? ? ? ? ? ? ? ? ? ? ? sheet = workbook.GetSheet(sheetName);
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (sheet != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt = GetSheetDataTable(sheet, out strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if (dt != null)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? dt.TableName = sheetName.Trim();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ds.Tables.Add(dt);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //MessageBox.Show("Sheet數據獲取失敗,原因:" + strMsg);
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? return ds;
? ? ? ? ? ? }
? ? ? ? ? ? catch (Exception ex)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? strMsg = ex.Message;
? ? ? ? ? ? ? ? return null;
? ? ? ? ? ? }


? ? ? ? }

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711656.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711656.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711656.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue-4

自定義創建項目 目標&#xff1a;基于 VueCli 自定義創建項目架子 大致步驟&#xff1a; 安裝腳手架創建項目 vue create 項目名稱選擇自定義 選擇 Manually select features 這一項 step-1:按下空格 : 選擇/取消--勾選請選擇&#xff1a;Babel、Router、CSS、Linterstep-2…

探索K8S的絕佳選擇:Killercoda與Play-with-K8s在線練習平臺

大家好&#xff0c;近年來Kubernetes&#xff08;K8S&#xff09;作為容器編排的瑞士軍刀&#xff0c;已經成為云原生技術的代表之一。學習K8S是現代云計算領域不可或缺的一部分&#xff0c;但很多人可能面臨一個問題——如何高效地學習K8S&#xff0c;尤其是缺乏實踐環境的初學…

藍橋杯 子矩陣 (找大小為a*b的矩陣的最大最小值的乘積,queue)

題目鏈接 &#xff1a; https://www.lanqiao.cn/problems/3521/learning/?subject_code1&group_code3&match_num14&match_flow1&origincup 思想 &#xff1a; 用堆維護最大值最小值即可 暴力實現 復雜度 N^2 * log(N^2) 代碼&#xff1a; #include<bit…

Vue3修改Element-plus語言與項目國際化

修改Element-plus默認語言 Element-plus默認語言是英語&#xff0c;可修改為其它語言&#xff1b; 此處 Element-plus 為自動按需導入方式配置&#xff1b; 更多導入方式&#xff1a;Vue3使用Element-plus-CSDN博客 全局配置默認語言參考&#xff1a;國際化 | Element Plus 統一…

文件對比工具Beyond Compare 4 mac v4.4.7(28397)中文版

Beyond Compare是一款適用于Windows、Mac OS X和Linux平臺的文件和文件夾比較工具。它可以幫助用戶比較和同步文件夾、文件和壓縮包等內容&#xff0c;支持多種文件格式&#xff0c;如文本、圖像、音頻、視頻等。 軟件下載&#xff1a;Beyond Compare 4 mac v4.4.7(28397)中文版…

Kafka中的acks機制——一次由錯誤資料引發的源碼學習

前言 這次的學習過程來歷有點奇怪。我本來是學習kafka過程中正常的學到了這個acks機制&#xff0c;但是發現很多地方寫的都不太明白。因此決定還是自己來看一下源碼。 具體來說&#xff1a;請看搜索結果&#xff08;Google引擎&#xff09; 這個是搜索“Kafka的ack”所得到的…

Excel中使用ROW函數自動更新行號或編號

操作步驟&#xff1a; 1、在編號“1”的單元格輸入公式“ROW()-1”&#xff1b; 2、在上一步填好公式的單元格基礎上下拉填充&#xff0c;即可批量得到編號&#xff0c;如果刪掉其中的一行或幾行&#xff0c;編號會自動進行更新。

數組與list的轉化分析

一、相互轉換的方法 1. 數組轉List &#xff0c;使用JDK中java.util.Arrays工具類的asList方法。 2. List轉數組&#xff0c;使用List的toArray方法。無參toArray方法返回 Object數組&#xff0c;傳入初始化長度的數組對象&#xff0c;返回該對象數組。 二、分析修改內容的影響…

在 Rust 中實現 TCP : 1. 聯通內核與用戶空間的橋梁

內核-用戶空間鴻溝 構建自己的 TCP棧是一項極具挑戰的任務。通常&#xff0c;當用戶空間應用程序需要互聯網連接時&#xff0c;它們會調用操作系統內核提供的高級 API。這些 API 幫助應用程序 連接網絡創建、發送和接收數據&#xff0c;從而消除了直接處理原始數據包的復雜性。…

【教3妹學編程-算法題】標記所有下標的最早秒數 II

3妹&#xff1a;2哥2哥&#xff0c;你有沒有看到上海女老師出軌男學生的瓜啊。 2哥 : 看到 了&#xff0c;真的是太毀三觀了&#xff01; 3妹&#xff1a;是啊&#xff0c; 老師本是教書育人的職業&#xff0c;明確規定不能和學生談戀愛啊&#xff0c;更何況是出軌。 2哥 : 是啊…

shell 免交互ecxept樣例

語法 expect [選項] [ -c cmds ] [ [ -[f|b] ] cmdfile ] [ args ] 選項 -c&#xff1a;從命令行執行expect腳本&#xff0c;默認expect是交互地執行的 示例&#xff1a;expect -c expect "\n" {send "pressed enter\n"} -d&#xff1a;輸出調試信息 …

【Qt學習】QTextEdit 與 QComboBox 的 屬性與實例(槽函數的使用、讀取本機內容到控件)

文章目錄 1. QTextEdit2.1 介紹2.2 實例使用 - 槽函數的使用 2. QComboBox2.1 介紹2.2 實例使用案例1&#xff1a;設置下拉框項目組件的方式案例2&#xff1a;讀取本機文件內容 到QComboBox 1. QTextEdit 2.1 介紹 我們可以查閱官方文檔&#xff0c;對QTextEdit 有更深的了解&…

源碼安裝nginx保姆級教程

一.目錄存放 1./usr/lib/syste,md/system/:每個服務最主要的啟動腳本設定 2. /run/systemd/system/&#xff1a;系統執行過程中所產生的服務腳本&#xff0c;這些腳本的優先序要比 /usr/lib/systemd/system/ 高&#xff01; 3./etc/systemd/system/&#xff1a;管…

【java 基礎】閑話 ClassLoader 和 SPI (一)

文章目錄 引子雙親委派模型你真的明白了嗎&#xff1f; 雙親委派“不夠用了”SPI機制 其他瑣碎 引子 有別于 java 提供的 IO 模塊&#xff0c;java 中的classloader主要是用來加載類的&#xff0c;當然除了加載類&#xff0c;也可以加載資源文件。 那么首先我們會問一個問題&…

java基礎 - 14 Java的Deque之Deque、BlockingDeque、LinkedBlockingDeque、ArrayDeque

Java 中的 Deque&#xff08;雙端隊列&#xff09;是一種具有隊列和棧特性的數據結構&#xff0c;它允許在兩端進行插入和刪除操作。Deque 接口是 Java 集合框架中的一部分&#xff0c;它定義了雙端隊列的基本操作。 BlockingDeque 接口&#xff1a; BlockingDeque 接口是 Deq…

docker搭建git服務器

1、docker搭建git服務器 總體思路&#xff1a;服務端通過docker搭建git服務器&#xff0c;客戶端創建git的賬戶及公鑰密鑰&#xff1b; 1&#xff09;服務端# 創建容器 # --privileged 獲得完整的root權限 # /usr/sbin/init 啟動容器執行的第一個命令 以便可以使用systemctl命…

2024年FPGA可以進嗎

2024年&#xff0c;IC設計FPGA行業仍有可能是一個極具吸引力和活力的行業&#xff0c;主要原因包括&#xff1a; 1. 技術發展趨勢&#xff1a;隨著5G、人工智能、物聯網、自動駕駛、云計算等高新技術的快速發展和廣泛應用&#xff0c;對集成電路尤其是高性能、低功耗、定制化芯…

【UE 材質】制作加載圖案(2)

在上一篇&#xff08;【UE 材質】制作加載圖案&#xff09;基礎上繼續實現如下效果的加載圖案 效果 步驟 1. 復制一份上一篇制作的材質并打開 2. 添加“Floor”節點向下取整 除相同的平鋪數 此時的效果如下 刪除如下節點 通過“Ceil”向上取整&#xff0c;參數“Tiling”默認…

教師招聘和事業編d類有什么區別嗎

每年都有大批懷揣教育夢想的年輕人&#xff0c;站在職業的十字路口&#xff0c;對未來充滿期許與疑惑。他們中的許多人都會面臨這樣一個問題&#xff1a;教師招聘和事業編D類&#xff0c;到底有什么區別&#xff1f;今天&#xff0c;就讓我來為你揭開這兩者的神秘面紗。 別被這…

【大數據】Flink SQL 語法篇(五):Regular Join、Interval Join

《Flink SQL 語法篇》系列&#xff0c;共包含以下 10 篇文章&#xff1a; Flink SQL 語法篇&#xff08;一&#xff09;&#xff1a;CREATEFlink SQL 語法篇&#xff08;二&#xff09;&#xff1a;WITH、SELECT & WHERE、SELECT DISTINCTFlink SQL 語法篇&#xff08;三&…