Microsoft.Office.Interop.Excel 的簡單操作

Microsoft.Office.Interop.Excel 的簡單操作

  • 1、安裝 Microsoft.Office.Interop.Excel
  • 2、聲明引用 Microsoft.Office.Interop.Excel
  • 3、簡單的新建 EXCEL 操作代碼
  • 4、將 DataGridView 表數據寫到 EXCEL 操作代碼
  • 5、將 EXCEL 表數據讀取到 C# 數據表 DataTable 操作代碼

1、安裝 Microsoft.Office.Interop.Excel

新建 C# 工程后,在【項目】菜單中點擊【管理 NuGet 程序包】,瀏覽搜索 Microsoft.Office.Interop.Excel,點擊下載安裝。

2、聲明引用 Microsoft.Office.Interop.Excel

using System.Data;
using System.Runtime.InteropServices;
using Microsoft.Office.Interop.Excel;
using Excel = Microsoft.Office.Interop.Excel; //指定別名

3、簡單的新建 EXCEL 操作代碼

            Excel.Application excelApp = new Excel.Application //定義Excel應用對象,別名以區別 C# 應用{Visible = false,//設置后臺運行可見性為falseDisplayAlerts = false,//禁止彈出警告AlertBeforeOverwriting = false//禁止覆蓋前彈出提醒};if (excelApp == null) return;//系統沒有Excel對象Excel.Workbook workbook = excelApp.Workbooks.Add();// 添加 Excel 工作簿(Workbook)workbook.Worksheets.Add(Type.Missing, workbook.Worksheets[1], 2, Type.Missing);// 在默認的 sheet1之后添加 2 個工作表Excel.Worksheet sheet1 = (Excel.Worksheet)workbook.Worksheets[1] as Excel.Worksheet;//定義Excel工作表Excel.Worksheet sheet2 = (Excel.Worksheet)workbook.Worksheets[2] as Excel.Worksheet; Excel.Worksheet sheet3 = (Excel.Worksheet)workbook.Worksheets[3] as Excel.Worksheet; // 命名工作表sheet1.Name = "測試";sheet2.Name = "宋體標題";sheet3.Name = "黑體標題";string[] headers = new string[] { "單位", "名稱", "屬性", "型號", "序列號" };Excel.Range headerRange = sheet2.Range[sheet2.Cells[1, 1], sheet2.Cells[1, headers.Length]];headerRange.Value2 = headers;headerRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中headerRange.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;//垂直居中headerRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//設置邊框headerRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//邊框常規粗細headerRange.WrapText = true;//自動換行headerRange.NumberFormatLocal = "@";//文本格式headerRange.Font.Name = "宋體";//設置字體headerRange.Font.Size = 12;//字體大小headerRange.Font.Bold = false;//字體加粗sheet2.Columns.AutoFit();//設置列寬和數據一致headerRange = sheet3.Range[sheet3.Cells[1, 1], sheet3.Cells[1, headers.Length]];headerRange.Value2 = headers;headerRange.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中headerRange.VerticalAlignment = Excel.XlHAlign.xlHAlignCenter;//垂直居中headerRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;//設置邊框headerRange.Borders.Weight = Excel.XlBorderWeight.xlThin;//邊框常規粗細headerRange.WrapText = true;//自動換行headerRange.NumberFormatLocal = "@";//文本格式headerRange.Font.Name = "黑體";//設置字體headerRange.Font.Size = 12;//字體大小headerRange.Font.Bold = true;//字體加粗sheet3.Columns.AutoFit();workbook.SaveAs(Application.StartupPath +  @"\1234.xlsx");//保存文件workbook.Close(false);//關閉工作簿excelApp.Quit();//退出對象Marshal.ReleaseComObject(workbook);Marshal.ReleaseComObject(excelApp);//釋放COM對象的引用workbook = null;excelApp = null;if (excelApp == null) MessageBox.Show("已經創建EXCEL文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

4、將 DataGridView 表數據寫到 EXCEL 操作代碼

  public void WriteExcelFromDgv(DataGridView dgv){Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application //定義Excel應用對象{Visible = false,//設置后臺運行可見性為falseDisplayAlerts = false,//禁止彈出警告AlertBeforeOverwriting = false//禁止覆蓋前彈出提醒};Excel.Workbook workbook = excelApp.Workbooks.Add();//定義Excel工作簿// Worksheet worksheet = workbook.ActiveSheet;//定義Excel工作表Excel.Worksheet worksheet = workbook.Worksheets[1];//定義默認Excel工作表int rowCount = dgv.Rows.Count;//獲取總行數int columnCount = dgv.Columns.Count;//獲取總列數for (int i = 0; i < columnCount; i++){worksheet.Cells[1, i + 1] = dgv.Columns[i].HeaderText;//填寫列標題worksheet.Cells[1, i + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中worksheet.Cells[1, i + 1].VerticalAlignment= Excel.XlHAlign.xlHAlignCenter;//垂直居中}for (int i = 0; i < rowCount - 1; i++){for (int j = 0; j < columnCount; j++){worksheet.Cells[i + 2, j + 1] = dgv.Rows[i + 1].Cells[j].Value;//填寫表格數據worksheet.Cells[i + 2, j + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//水平居中worksheet.Cells[i + 2, j + 1].VerticalAlignment= Excel.XlHAlign.xlHAlignCenter;//垂直居中 }}worksheet.Columns.AutoFit();//設置列寬和數據一致worksheet.SaveAs(Application.StartupPath + @"\DataGridViewData.xlsx");//保存文件workbook.Close(false);//關閉工作簿excelApp.Quit();//退出對象Marshal.ReleaseComObject(workbook);Marshal.ReleaseComObject(excelApp);//釋放COM對象的引用workbook = null;excelApp = null;if (excelApp == null) MessageBox.Show("數據已經寫入到 EXCEL 文件", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);}

5、將 EXCEL 表數據讀取到 C# 數據表 DataTable 操作代碼

        /// <summary>將 EXCEL 表數據讀取到 C# 數據表 DataTable</summary>/// <param name="filePath">EXCEL 文件路徑</param>/// <param name="columnsToExtract">讀取列數</param>/// <param name="skipRows">跳過行數</param>/// <returns>返回數據表 dataTable </returns>public DataTable ReadExcelToDataTable(string filePath,int[] columnsToExtract, int skipRows=2){Excel.Application excelApp = new Excel.Application();Excel.Workbook workbook = excelApp.Workbooks.Open(filePath);Excel.Worksheet worksheet = workbook.Sheets[1];//第一個sheetExcel.Range usedRange = worksheet.UsedRange;int rowCount = usedRange.Rows.Count;int colCount = columnsToExtract.Length;DataTable dataTable=new DataTable();object[,] valueArray = (object[,])usedRange.Value;for (int row = skipRows; row <= rowCount; row++){DataRow dataRow = dataTable.NewRow();for (int col = 0; col < colCount; col++){int colIndex = columnsToExtract[col];dataRow[col] = valueArray[row, colCount]?.ToString() ?? string.Empty;}dataTable.Rows.Add(dataRow);}workbook.Close(false);excelApp.Quit();Marshal.ReleaseComObject(excelApp);//釋放COM對象的引用return dataTable;}

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

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

相關文章

LLM 對話框組件 | 字節青訓營前端開發項目

系統介紹 LLM對話框項目系統介紹 一、項目概述 選題背景隨著人工智能技術的飛速發展,自然語言處理(NLP)領域取得了顯著進展,其中對話系統(Dialog System)作為NLP的重要應用方向,正逐漸滲透到人們的日常生活中。從智能客服到語音助手,從智能家居到在線教育,對話系統以…

k8s命名空間和資源配額

在現代的云計算環境中&#xff0c;容器化技術已成為主流。而 Kubernetes&#xff08;簡稱 k8s&#xff09;作為一項開源的容器編排系統&#xff0c;廣泛應用于各類場景。本文將詳細介紹關于 k8s 中的命名空間和資源配額&#xff0c;幫助你更好地理解和管理你的集群資源。 k8s …

從統計學視角看機器學習的訓練與推理

從統計學視角看機器學習的訓練與推理 目錄 引言&#xff1a;統計學與機器學習的奇妙緣分訓練與推理&#xff1a;你得先學會“看數據”再“用數據”最大似然估計&#xff08;MLE&#xff09;&#xff1a;從直覺到數學證明 3.1 伯努利分布的MLE3.2 單變量高斯分布的MLE3.3 多元…

AI賦能企業協作4-NL2Sql技術路線

1.1 對話即服務的一點思考 在數智化轉型的過程中&#xff0c;基于即時通信&#xff08;IM&#xff09;的協作平臺正悄然成為企業智能化轉型的“新基建”。協作平臺天然具備高頻交互、實時協同和場景化落地的特性&#xff0c;仿佛是為對話式AI量身定制的試驗場——員工在熟悉的聊…

批量提取 Word 文檔中的頁面

如何將 Word 文檔中的頁面提取出來形成一個新的文檔呢&#xff1f;比如將 Word 文檔中的第一頁提取出來、將 Word 文檔中的最后一頁提取出來、再或者將 Word 文檔中的中間幾頁提取出來等等。人工的處理肯定非常的麻煩&#xff0c;需要新建 Word 文檔&#xff0c;然后將內容復制…

Sqlserver安全篇之_啟用TLS即配置SQL Server 數據庫引擎以加密連接

官方文檔 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/configure-sql-server-encryption?viewsql-server-ver16 https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/manage-certificates?viewsql-server-ver15&pre…

多鏡頭視頻生成、機器人抓取、擴散模型個性化 | Big Model weekly第58期

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入&#xff01; 01 GLM-4-Voice: Towards Intelligent and Human-Like End-to-End Spoken Chatbot 本文介紹了一種名為GLM-4-Voice的智能且類人化的端到端語音聊天機器人。它支持中文和英文&#xff0c;能夠進行實時語音對話&a…

基于 Rust 與 GBT32960 規范的編解碼層

根據架構設計&#xff0c;實現編解碼層的代碼設計 Cargo.toml 加入二進制序列化支持 # 序列化支持 ... bincode "1.3" # 添加二進制序列化支持 bytes-utils "0.1" # 添加字節處理工具 開始編碼 錯誤處理&#xff08;error.rs&#x…

MOM成功實施分享(七)電力電容制造MOM工藝分析與解決方案(第一部分)

聲明&#xff1a;文章僅用于交流學習&#xff0c;不用于商業項目實施&#xff0c;圖片來源于網絡&#xff0c;如有侵犯權利&#xff0c;請聯系作者及時刪除。 本方案旨在對電力電容&#xff08;PEC和PQM型號&#xff09;制造工藝深度分析&#xff0c;結合管理要求設計MOM相關功…

FPGA開發,使用Deepseek V3還是R1(1):應用場景

以下都是Deepseek生成的答案 FPGA開發&#xff0c;使用Deepseek V3還是R1&#xff08;1&#xff09;&#xff1a;應用場景 FPGA開發&#xff0c;使用Deepseek V3還是R1&#xff08;2&#xff09;&#xff1a;V3和R1的區別 FPGA開發&#xff0c;使用Deepseek V3還是R1&#x…

JavaWeb后端基礎(3)

原打算把Mysql操作數據庫的一些知識寫進去&#xff0c;但是感覺沒必要&#xff0c;要是現在會的都是簡單的增刪改查&#xff0c;所以&#xff0c;這一篇&#xff0c;我直接從java操作數據庫開始寫&#xff0c;所以這一篇大致就是記一下JDBC、MyBatis、以及SpringBoot的配置文件…

Pytorch實現之SRGAN+CBAM的結構設計

簡介 簡介:在SRGAN的殘差連接中加入了CBAM注意力機制,同時設計了四類損失來訓練。 論文題目:Super-resolution Generative Adversarial Networks Based on Attention Model(基于注意力模型的超分辨率生成對抗網絡) 會議:2020 IEEE第六屆計算機與通信國際會議 摘要:基…

移動端國際化翻譯同步解決方案-V3

1.前言 因為軟件出海&#xff0c;從在上上家公司就開始做翻譯系統&#xff0c;到目前為止已經出了兩個比較大的版本了&#xff0c;各個版本解決的痛點如下&#xff1a; V1版本&#xff1a; 主要針對的是AndroidiOS翻譯不一致和翻譯內容管理麻煩的問題&#xff0c;通過這個工具…

2.css簡介

什么是css&#xff1a; CSS (Cascading Style Sheets&#xff0c;層疊樣式表&#xff09;&#xff0c;是一種用來為結構化文檔&#xff08;如 HTML 文檔或 XML 應用&#xff09;添加樣式&#xff08;字體、間距和顏色等&#xff09;的計算機語言&#xff0c;CSS 文件擴展名為 .…

機器人學習模擬框架 robosuite (3) 機器人控制代碼示例

Robosuite框架是一個用于機器人模擬和控制的強大工具&#xff0c;支持多種類型的機器人。 官方文檔&#xff1a;Overview — robosuite 1.5 documentation 開源地址&#xff1a;https://github.com/ARISE-Initiative/robosuite 目錄 1、通過鍵盤或SpaceMouse遠程控制機器人…

可終身授權的外國工具,不限次數使用!PDF轉CAD的軟件

最近有不少朋友問我有沒有好用的CAD轉換工具&#xff0c;今天就來給大家分享兩款超實用的小軟件&#xff0c;希望能幫到大家。 第一款軟件是一款國外開發的&#xff0c;它專門用來把PDF文件轉換成CAD格式&#xff0c;特別方便。 這款軟件的操作非常簡單&#xff0c;打開后無需安…

Ubuntu系統上部署Node.js項目的完整流程

以下是在Ubuntu系統上部署Node.js項目的完整流程&#xff0c;分為系統初始化、環境配置、項目部署三個部分&#xff1a; 一、系統初始化 & 環境準備 bash # 1. 更新系統軟件包 sudo apt update && sudo apt upgrade -y# 2. 安裝基礎工具 sudo apt install -y buil…

Android內存優化指南:從數據結構到5R法則的全面策略

目錄 一、APP 內存限制 二、內存的三大問題 2.1、內存抖動(Memory Churn) 2.1.1 頻繁創建短生命周期對象 2.1.2 系統API或第三方庫的不合理使用 2.1.3 Handler使用不當 2.2、內存泄漏(Memory Leak) 2.2.1 靜態變量持有Activity或Context引用 2.2.2 未取消的回調或…

ffmpeg源碼編譯支持cuda

1.安裝cuda CUDA Toolkit 11.3 Downloads | NVIDIA Developer 在選擇組件的時候&#xff0c;將CUDA中的Nsight VSE和Visual Studio Integration取消勾選 不然會安裝失敗 2.編譯ffmpeg 把cuda編譯宏定義開啟&#xff0c;再編譯avcodec 3.編譯livavutil報錯struct "Cuda…

Git強制覆蓋分支:將任意分支完全恢復為main分支內容

Git強制覆蓋分支&#xff1a;將任意分支完全恢復為main分支內容 場景背景完整操作步驟一、前置準備二、操作流程步驟 1&#xff1a;更新本地 main 分支步驟 2&#xff1a;強制重置目標分支步驟 3&#xff1a;強制推送至遠程倉庫 三、操作示意圖 關鍵風險提示&#xff08;必讀&a…