C# VSTO 學習心得 Day4

在这里插入图片描述

VSTO學習寫起來感覺比較像是字典,寫了好多的函數

不過比較常使用的函數,其實也都介紹的差不多了,最後在寫一篇應該就結束了

接續上一篇繼續介紹如何使用C#來操控EXCEL欄位以及格式

editBox取值

前幾張有提到dropdown的取值,這邊在補上editBox的取值方法
也可以輸入值進去

//讀取
 var data = Globals.Ribbons.Ribbon1.editBox2.Text;
 //寫入
 Globals.Ribbons.Ribbon1.editBox2.Text = "123";

插入COL欄位

Excel.Range x2Range = Globals.Sheet2.Range["A:AZ"];
x2Range.Range["N1"].EntireColumn.Insert();

清除內容

但保留儲存格格式

Globals.ws.Cells.ClearContents();

獲取當前使用行列數

獲取EXCEL使用行列數,如果操控EXCEL新增行列後,則要重新讀取,才能在獲取當前新行列數

int RowCount = Globals.Sheet1.UsedRange.Rows.Count;//資料列用了多少列
int ColCount = Globals.Sheet1.UsedRange.Columns.Count;//資料列用了多少欄

獲取當前COL有資料的CELLS有多少格

//取得使用ROW的數量
Excel.Workbook workbook = Globals.ThisWorkbook.InnerObject;
Excel.Worksheet worksheet = (Excel.Worksheet)workbook.ActiveSheet;
Excel.Range range = worksheet.Range["B:B"];
int usedRowsCount = (int)worksheet.Application.WorksheetFunction.CountA(range);

刪除重複出現的資料

這個範圍如果有重複出現的資料那就會只留下一筆其餘刪除

Excel.Range x1Range = Globals.Sheet1.Range["A:AZ"];//先讀取範圍
x1Range.RemoveDuplicates(2);//刪除重複行
姓名年齡年齡
John25USA
Mary30UK
John25USA
Alex28Canada
Mary30UK
John30USA

變化後如下

姓名年齡年齡
John25USA
Mary30UK
Alex28Canada

取得CELLS的值

可以單一取的CELLS值,也可以是範圍取得最後匯入C# obj物件中,範圍取得放在下一個範例中介紹

var x = x1Range.Cells[1, 22].Text();
var x = x1Range.Cells[1, 22].value2;

連結outlook發送郵件

這一部分比較特別些,但畢竟都是office軟件所以可以一起使用

需要匯入using Outlook,另外一般資料都是C# 流向EXCEL,這邊可以反向流回也就是讀取

文件內容也可以使用表格格式等等,不過要使用HTML格式來寫入

所以使用for loop + string來串起整個HTML字串,最後匯入MAIL 文件內容中

using Outlook = Microsoft.Office.Interop.Outlook;

//MAIL函數
Outlook.Application outlookApp = new Outlook.Application();
Outlook.MailItem mailItem =(Outlook.MailItem)outlookApp.CreateItem(Outlook.OlItemType.olMailItem);

//標題 & 收件人
mailItem.Subject = "標題";
mailItem.To = "收件人";

//反向從EXCEL取得內容匯入C# obj物件
Excel.Range content = ws.Range[$"A1:N{usedRowsCount}"];
object[,] cellData = (object[,])content.Value;

            //FIRST ROW
            for (int row = 0; row < 1; row++)
            {
                tableHtml += "<tr style=background:#32CD32;>";
                for (int col = 0; col < cellData.GetLength(1); col++)
                {
                    tableHtml += "<td><font face=DFKai - sb>" + cellData[row+1, col+1] + "</font></td>";
                }
                tableHtml += "</tr>";
            }

            for (int row = 1; row < cellData.GetLength(0); row++)
            {
                tableHtml += "<tr style=background:#FCE6C9; >";
                for (int col = 0; col < cellData.GetLength(1); col++)
                {
                    tableHtml += "<td><font face=DFKai - sb>" + cellData[row + 1, col + 1] + "</font></td>";
                }
                tableHtml += "</tr>";
            }
            tableHtml += "</tbody>";
            tableHtml += "</table>";
            tableHtml += "</body></html>";
//內容匯入MAIL
mailItem.HTMLBody = tableHtml;
//寄送
mailItem.Send();


將儲存格上色

//先取得當前使用的工作簿
Excel.Workbook ws = Globals.ThisWorkbook.Application.ActiveWorkbook;
//上色範圍
Excel.Range range = ws.Range[ws.Cells[1, 1], ws.Cells[1, dt.Columns.Count]];
//選取當前工作簿的哪一個sheet
Excel.Worksheet worksheet = ws.Sheets[worksheetName];
//C#顏色模塊
var color_number = "#ADD8E6" //色號
int argbColor = System.Drawing.ColorTranslator.FromHtml(color_number).ToArgb();
//套用到要上色的範圍中
range.Interior.Color = argbColor;

常用的功能應該都介紹差不多了
若未來還有比較新奇的功能會再慢慢補上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值