轉載:C# Office 開發

来源:http://www.cnblogs.com/yin3072114/archive/2016/02/15/5190955.html
-Advertisement-
Play Games

原文地址:http://blog.sina.com.cn/s/blog_604fb7ae0100x2s7.html 中小企業辦公自動化系統都需要有與微軟辦公軟體連接的功能,如把數據導入到電子錶格、Word等功能。C#.NET在Office方面提供了強大的功能,只要導入 Microsoft.Offic


原文地址:http://blog.sina.com.cn/s/blog_604fb7ae0100x2s7.html

 

中小企業辦公自動化系統都需要有與微軟辦公軟體連接的功能,如把數據導入到電子錶格、Word等功能。C#.NET在Office方面提供了強大的功能,只要導入 Microsoft.Office.Interop.Excel 命名空間並調用此命名空間下的類,就可以在程式調用Excel、Word。

  (一)Excel開發

   首先導入 Microsoft.Office.Interop.Excel 命名空間

   需要的類

   _Application excel = new ApplicationClass();  //實例化對象

   int rowIndex = 6;
   int colIndex = 0;

   _Workbook xBk;
   _Worksheet xSt;

   xBk = excel.Workbooks.Add(true);
   xSt = (Microsoft.Office.Interop.Excel._Worksheet)xBk.ActiveSheet;

   //取得列標題
   for (int i = 0; i < dgvYingShouAmount.Columns.Count; i++){
      colIndex++;
      excel.Cells[rowIndex, colIndex] = Convert.ToString(dgvYingShouAmount.Columns[i].HeaderText);
   }

   //取得表格中的數據

   for (int i = 0; i < dgvYingShouAmount.Rows.Count; i++){
      rowIndex++;
      colIndex = 0;
      for (int j = 0; j < dgvYingShouAmount.Columns.Count; j++){
         colIndex++;

         excel.Cells[rowIndex, colIndex] =Convert.ToString(dgvYingShouAmount.Rows[i].Cells[j].Value);
         xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenter;
      }     
   }

    excel.Cells[1, 1] = "***有限公司";
    excel.Cells[2, 1] = "地址";
    excel.Cells[3, 1] = "電話 傳真";
    excel.Cells[4, 1] = "客戶對賬單";
    excel.Cells[5, 1] = "操作日期:" + dtpStartDate.Value.ToString("yyyy-MM-dd") + "/" + dtpEndDate.Value.ToString("yyyy-MM-dd");

    // 
    //設置整個報表的標題格式 
    // 
    xSt.get_Range(excel.Cells[1, 1], excel.Cells[1, 1]).Font.Bold = true;
    xSt.get_Range(excel.Cells[1, 1], excel.Cells[1, 1]).Font.Size = 22;

    xSt.get_Range(excel.Cells[3, 1], excel.Cells[3, 1]).Font.Bold = true;

    //設置報表表格為最適應寬度 
    // 
    xSt.get_Range(excel.Cells[6, 2], excel.Cells[rowIndex, colIndex]).Select();
    xSt.get_Range(excel.Cells[6, 2], excel.Cells[rowIndex, colIndex]).Columns.AutoFit();

    //設置整個報表的標題為跨列居中 
    // 
    xSt.get_Range(excel.Cells[1, 1], excel.Cells[1, colIndex]).Select();
    xSt.get_Range(excel.Cells[1, 1], excel.Cells[1, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
    xSt.get_Range(excel.Cells[2, 1], excel.Cells[2, colIndex]).Select();
    xSt.get_Range(excel.Cells[2, 1], excel.Cells[2, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
    xSt.get_Range(excel.Cells[3, 1], excel.Cells[3, colIndex]).Select();
    xSt.get_Range(excel.Cells[3, 1], excel.Cells[3, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
    xSt.get_Range(excel.Cells[4, 1], excel.Cells[4, colIndex]).Select();
    xSt.get_Range(excel.Cells[4, 1], excel.Cells[4, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
    xSt.get_Range(excel.Cells[5, 1], excel.Cells[5, colIndex]).Select();
    xSt.get_Range(excel.Cells[5, 1], excel.Cells[5, colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;
    // 
    //繪製邊框 
    // 
    xSt.get_Range(excel.Cells[6, 1], excel.Cells[rowIndex, colIndex]).Borders.LineStyle = 1;
    xSt.get_Range(excel.Cells[6, 1], excel.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;//設置左邊線加粗 
    xSt.get_Range(excel.Cells[6, 1], excel.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;//設置上邊線加粗 
    xSt.get_Range(excel.Cells[6, 1], excel.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;//設置右邊線加粗 
    xSt.get_Range(excel.Cells[6, 1], excel.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThick;//設置下邊線加粗

    excel.Visible = true;

    string file = "保存的路徑";
    xBk.SaveCopyAs(file); 

 

 

以下為我仿寫的代碼:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 
 9 using MSExcel = Microsoft.Office.Interop.Excel;
10 
11 namespace testoffice
12 {
13     public partial class Form1 : Form
14     {
15         public Form1()
16         {
17             InitializeComponent();
18         }
19 
20         private void button1_Click(object sender, EventArgs e)
21         {
22             MSExcel._Application excel = new MSExcel.ApplicationClass();
23 
24             int rowIndex = 6, colIndex = 0, myCCount = 10, myRCount = 3;
25 
26             MSExcel._Workbook xBk = null;
27             MSExcel._Worksheet xSt = null;
28 
29             xBk = excel.Workbooks.Add(true);
30             xSt = (MSExcel._Worksheet)xBk.ActiveSheet;
31 
32             //
33             for (int i = 0; i < myCCount; i++)
34             {
35                 colIndex++;
36                 xSt.Cells[rowIndex, colIndex] = "標題" + colIndex.ToString();
37             }
38 
39             //
40             for (int i = 0; i < myRCount; i++)
41             {
42                 rowIndex++;
43                 colIndex = 0;
44                 for (int j = 0; j < myCCount; j++)
45                 {
46                     colIndex++;
47                     xSt.Cells[rowIndex, colIndex] = "內容" + rowIndex.ToString() + ":" + colIndex.ToString();
48                     xSt.get_Range(xSt.Cells[rowIndex, colIndex], xSt.Cells[rowIndex, colIndex]).HorizontalAlignment = MSExcel.XlHAlign.xlHAlignCenter;
49                 }
50             }
51 
52             xSt.Cells[1, 1] = "宇宙無限公司";
53             xSt.Cells[2, 1] = "地址";
54             xSt.Cells[3, 1] = "電話 傳真";
55             xSt.Cells[4, 1] = "客戶對賬單";
56             xSt.Cells[5, 1] = "操作日期:" + DateTime.Now.ToLongTimeString();
57 
58             //
59             xSt.get_Range(xSt.Cells[1, 1], xSt.Cells[1, 1]).Font.Bold = true;
60             xSt.get_Range(xSt.Cells[1, 1], xSt.Cells[1, 1]).Font.Size = 22;
61             xSt.get_Range(xSt.Cells[3, 1], xSt.Cells[3, 1]).Font.Bold = true;
62 
63             xSt.get_Range(xSt.Cells[6, 2], xSt.Cells[1, 1]).Font.Bold = true;
64 
65             //
66             for (int i = 1; i < 6; i++)
67             {
68                 xSt.get_Range(xSt.Cells[i, 1], xSt.Cells[i, colIndex]).Select();
69                 xSt.get_Range(xSt.Cells[i, 1], xSt.Cells[i, colIndex]).HorizontalAlignment = MSExcel.XlHAlign.xlHAlignCenterAcrossSelection;
70             }
71 
72             //
73             xSt.get_Range(xSt.Cells[6, 1], xSt.Cells[rowIndex, colIndex]).Borders.LineStyle = 1;
74             xSt.get_Range(xSt.Cells[6, 1], xSt.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].Weight = MSExcel.XlBorderWeight.xlThick;
75             xSt.get_Range(xSt.Cells[6, 1], xSt.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeTop].Weight = MSExcel.XlBorderWeight.xlThick;
76             xSt.get_Range(xSt.Cells[6, 1], xSt.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeRight].Weight = MSExcel.XlBorderWeight.xlThick;
77             xSt.get_Range(xSt.Cells[6, 1], xSt.Cells[rowIndex, colIndex]).Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeBottom].Weight = MSExcel.XlBorderWeight.xlThick;
78 
79             excel.Visible = true;
80             string file = "e:/testexcel.xlsx";
81             xBk.SaveCopyAs(file);
82         }
83     }
84 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 別人的項目,剛用MyEclipse載入進來,一大堆錯誤(見怪不怪了) JSP報錯,上圖: 報錯:“The method getContextPath() from the type HttpServletRequest refers to the missing type String” 解決方式:
  • 又一個milestone即將結束,有了些許的時間總結研發過程中的點滴心得,今天總結下如何在編寫python代碼時對非同步操作進行同步化模擬,從而提高代碼的可讀性和可擴展性。 游戲引擎一般都採用分散式框架,通過一定的策略來均衡伺服器集群的資源負載,從而保證伺服器運算的高併發性和CPU高利用率,最終提高游
  • 事件模型是被廣泛使用的好東西,但是C++標準庫里沒有現成的,其他實現又複雜或者不優雅,比如需要使用巨集。現在VC11可以用在XP下了,那麼就痛快的拿起C++11提供的先進設施組合出一個輕便的實現吧。 為了達到簡潔的目的,需要放棄一些特性: 1、不支持判斷函數是否已經綁定過(因為std::functio
  • 清除空格的方法是不安全的,部分原因是因為字元中的空格非常多,例如 "addslashes的問題在 於黑客 可以用0xbf27來代替單引號,而addslashes只是將0xbf27修改為0xbf5c27,成為一個有效的多位元組字元,其中的0xbf5c仍會 被看作是單引號,所以addslashes無法成功
  • 以下是小白的爬蟲學習歷程中遇到並解決的一些困難,希望寫出來給後來人,如有疏漏懇請大牛指正,不勝感謝! 首先,我的代碼是這樣的 1 2 3 import requests 4 5 url = 'http://www.acfun.tv/' 6 html = requests.get(url) 7 8 p
  • ArrayList與LinkedList的普通for迴圈遍歷 對於大部分Java程式員朋友們來說,可能平時使用得最多的List就是ArrayList,對於ArrayList的遍歷,一般用如下寫法: public static void main(String[] args) { List<Integ
  • 遲來的年後總結 其實很多時候都想寫兩篇博客來記錄下工作學習中的點點滴滴,不過自從去年10月份後,工作上總是無比的忙,新功能,新項目,需求不明確,需求變動等原因導致在後期長時間的加班和趕工。不過慶幸2015終歸拉下了帷幕。在2015年中雖然累,雖然有段時間無比苦逼,不過也算是學了很多,如 技術上的突破
  • 不管什麼平臺,應用內難免會出現一些消息提示框,下麵就來聊聊我在UWP里用到的消息提示框。 彈窗也可按是否需要用戶操作促發一些邏輯進行分為兩大類。 不需要用戶干涉的一類: MessageDialog:操作簡單,寫起來也省事,想具體瞭解的請參考MSDN 先看看效果 PC上效果: mobile上效果: 再
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...