C#操作Excel

1.System.Data.DataTable連接數據庫

ExcelFile?是excel的完整路徑
//OleDbConnection conExcel = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFile + ";Extended Properties=Excel 8.0");
//if (conExcel.State == ConnectionState.Closed)
//{
// ? ?conExcel.Open();
//}
2.獲取第一個sheet表名稱
不建議寫死,程序自動獲取下也很快的
System.Data.DataTable dtTmp = conExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string tableName = dtTmp.Rows[0][2].ToString().Trim();
3.獲取datatable
"select * from [" + tableName + "]"
執行這個sql語句吧,剩下的就是datatable的操作了
根據DataTable可以獲取各行各列的值,但似乎不穩定,有時只能獲取空值而實際明明有值
4.com方式打開excel
需引用Microsoft.Office.Interop.Excel
object missing = System.Type.Missing;
Application app = new ApplicationClass();
打開excel,注意空參數不可以用null
Workbook wBook = app.Workbooks.Open(ExcelFile, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
app.Visible = false;
//設置禁止彈出保存和覆蓋的詢問提示框
app.DisplayAlerts = false;
app.AlertBeforeOverwriting = false;
打開第一個Worksheet
Worksheet wSheet = wBook.Worksheets[1] as Worksheet;
寫值
wSheet.Cells[行, 列] = "你想寫的值";
獲取cell的值,注意不可用wSheet.Cells[行, 列]獲取,這樣一般得到"System.__ComObject"
Range ra = wSheet.get_Range(wSheet.Cells[i, j], wSheet.Cells[i, j]); 此處是單元格范圍,自己決定多大
string sVal = ra.Text.ToString();
判斷單元格是否有公式
ra.Formula.ToString().IndexOf("=") >= 0
設置excel單元格樣式,很多的,自己百度下吧
這個是設置單元格的邊框寬度
Range range = wSheet.get_Range(wSheetDes.Cells[i, j], wSheetDes.Cells[i, j]);
range.Borders[XlBordersIndex.xlEdgeBottom].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeLeft].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeRight].Weight = 2;
range.Borders[XlBordersIndex.xlEdgeTop].Weight = 2;
Range range = wSheetDes.get_Range(wSheet.Cells[i, j], wSheet.Cells[i, j]);
range.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
range.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlThin, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
//保存工作簿,方法很多,自己決定怎么用
wSheet.SaveAs(ExcelFile, missing, missing, missing, missing, missing, missing, missing, missing, missing);
wBook.Save();
app.Save(ExcelFile);
app.SaveWorkspace(ExcelFile);
退出,比較麻煩
wBook.Close(true, missing, missing);
wSheet = null;
wBook = null;
app.Quit();
app = null;
System.GC.Collect();
System.GC.WaitForFullGCComplete();
全部關掉然后置為null,再強制垃圾回收即可
常用的大概這么多,應該夠用了

轉載于:https://www.cnblogs.com/jhlong/p/5445408.html

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

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

相關文章

android抓包工具——使用fiddler4在安卓手機抓包

Fiddler是一款非常流行并且實用的http抓包工具,它的原理是在本機開啟了一個http的代理服務器,然后它會轉發所有的http請求和響應,因此,它比一般的firebug或者是chrome自帶的抓包工具要好用的多。不僅如此,它還可以支持…

rust風化速度_反駁《Golang、Rust的執行速度的對照,讓人大吃一驚。》——不會別瞎說...

首先我無意引戰,但是今天看到某位同學的文章里有某些錯誤,不得不指正一下。1. 測量時間的時候我們使用 std::time::SystemTime::elapsed 即可,不必蹩腳的使用兩個 system 輸出出來還得手動算一下。(當然你說對Rust不熟也就無所謂了)2. 最重要…

css flexbox模型_代碼簡介:CSS Flexbox有點像旅行

css flexbox模型Here are three stories we published this week that are worth your time:這是我們本周發布的三個值得您關注的故事: CSS Flexbox explained by road tripping across the country: 7 minute read CSS Flexbox在全國各地的旅途中進行了解釋&#…

Sharepoint 2013設置customErrors

原文地址:http://www.cnblogs.com/renzh/archive/2013/03/05/2944309.html#3407239 一、首先設置IIS中的Web.config文件 找到對應的IIS應用程序目錄,如:C:\inetpub\wwwroot\wss\VirtualDirectories\3000 在此文件夾下包含一個web.config文件&…

ddt數據驅動

數據驅動原理 1.測試數據為多個字典的list類型 2.測試類前加修飾ddt.ddt 3.case前加修飾ddt.data() 4.運行后用例會自動加載成三個單獨的用例 5.測試結果: Testing started at 21:51 ...start!{username: selenium\xe7\xbe\xa4, psw: 232607095}end!start!{username…

http協議報文體_HTTP報文基本概念學習

HTTP是什么HTTP是HyperText Transfer Protocol的縮寫,中文就是超文本傳輸協議,所謂的超,是個學術用語,是基于某種事物增加了更多的信息維度,比如超像素xxx之類的.協議是什么,協議說白了就是約定,約定就是模板,就是表格,就和你去銀行辦手續一樣,客戶不知道要提供什么信息,銀行又…

yeoman_使用yeoman輕松創建Yeoman生成器

yeomanby Krist Wongsuphasawat克里斯特旺蘇帕薩瓦(Krist Wongsuphasawat) 使用yeoman輕松創建Yeoman生成器 (Creating Yeoman generators easily with yeoman-easily) I’ve used Yeoman to start many of my projects. It’s an amazing web scaffolding tool.我已經用Yeoma…

linux 輕量化圖形界面,YOXIOS 入門教程--基于Linux的 輕量化GUI圖形系統和硬件平臺(41頁)-原創力文檔...

YOXIOS --基于 Linux 的輕量化 GUI圖形系統和硬件平臺YOXIOS 入門教程基于 Linux 的 輕量化 GUI圖形系統和硬件平臺(V1.0 2020-05)提示:閱讀此文檔需要有一定的單片機開發、C/C編程語言、和使用 IDE開發工具的基礎YOXIOS (C) 2020 游芯科技第 1 頁 共 41 頁YOXIOS -…

第一階段 XHTML.定位樣式

一位初學php的隨堂筆記,記錄自己的成長! 1.清除浮動 (1)格式 clear:both清除兩邊|left清除左邊 right清除右邊 高度塌陷:父元素中的子元素都浮動,而父元素 沒有設置高,那父元素的高為0 (2)萬能清除(在父元素…

Canvas入門06-線段與像素邊界

我們知道,使用以下2個API可以繪制一條線段: moveTo(x, y) 向當前路徑中增加一條子路徑,該子路徑只包含一個點,此為線段的起始點lineTo(x, y) 將線段的下一個點加入子路徑中context.strokeStyle rgb(200, 200, 0); context.lineWi…

函數表達書-讀書筆記

定義函數的方式有兩種:一種是函數聲明,另一種就是函數表達式。函數聲明的語法如下: function functionName(arg0,arg1,arg2){//函數體 } 函數聲明,有一個重要特征就是函數聲明提升。也就是在執行代碼之前會先讀取函數聲明&#xf…

vue截取一個字符串_vue 截取字符串

let str abcdef;// 0str str.slice(0);//返回整個字符串 abcdefstr str.substring(0);//返回整個字符串 abcdefstr str.substr(0);//返回整個字符串 abcdef// 使用一個參數str str.slice(2);//截取第二個之后所有的字符 cdefstr str.substring(2);//截取第二個之后所有的…

網絡工程師需要哪些知識_成長工程師可以教給我們哪些工程知識

網絡工程師需要哪些知識I’ve been working as an engineer on the growth team at Airbnb for a couple of months now.我已經在Airbnb的成長團隊擔任工程師幾個月了。 Since I’m in an environment full of passionate developers, I wanted to share some of the good eng…

linux父進程循環,LINUX C 父進程建立多個子進程循環非堵塞回收列子

下面 代碼主要用于復習,留于此點擊(此處)折疊或打開/*************************************************************************> File Name: fork5.c> Author: gaopeng QQ:22389860 all right reserved> Mail: gaopp_200217163.com> Created Time: …

服務器自動運行python_在虛擬主機中安裝了python程序,如何使它在服務器上自動運行?...

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":3,"count":3}]},"card":[{"des":"IP地理位置庫(GeoIP Databases)是對運營商分…

模擬測試

題解: 3道水題。。 1。生活大爆炸版剪刀石頭布 忘記怎么打f[5][5]{}這個了。。 然后發現里面啥都不加也可以 加的話要是{} 2.送禮物 雙向搜 有點卡常數。。 我沒寫dfs 寫了dp求多少(好智障啊。。 訪問數組挺慢的所以應該速度差不多。。) lowb…

javascript閉包_通過郵寄包裹解釋JavaScript閉包

javascript閉包by Kevin Kononenko凱文科諾年科(Kevin Kononenko) 通過郵寄包裹解釋JavaScript閉包 (JavaScript Closures Explained by Mailing a Package) 如果您以前寄過包裹或信件,那么您可以了解JavaScript中的閉包。 (If you have mailed a package or lette…

linux 加入ad 用ssh,使用samba驗證AD用戶,允許AD用戶登錄到linux

使用samba驗證AD用戶,允許AD用戶登錄到linux2007年06月26日 星期二 14:101、先把samba加入到AD域中2、在smb.conf中添加一行,讓登錄進來的用戶使用bashtemplate shell /bin/bash3、運行authconfig,在驗證中選擇 使用smb和kerberos,winbind驗…

體會日子

體會日子 開通了博客園, 日子要記錄一下。 以后要好好上進了。 posted on 2016-05-01 23:16 體會日子 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/yukunshi/p/5451485.html