自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#讀寫Excel文件相關技巧

開發(fā) 后端
這里將介紹一些C#讀寫Excel文件的相關技巧,畢竟Excel打印更為方便和實用。希望本文能對大家用好Excel有所幫助。

一直想小結一些C#讀寫Excel文件的相關技巧,畢竟Excel打印更為方便和實用,一個是Excel打印輸出編碼比Word文件打印數(shù)據(jù)簡單些,另一個是Excel本身對數(shù)據(jù)超強計算處理功能;趕巧最近項目又涉及Excel報表統(tǒng)計打印的問題,所以在把其中的一些技術記錄下來與大家一起分析討論,次篇主要涉及兩個方面內容:

1、C#讀寫Excel文件

A、設計Excel模版

B、打開一個目標文件并且讀取模版內容

C、目標文件按格式寫入需要的數(shù)據(jù)

D、保存并且輸出目標Excel文件

2、 Excel對象資源釋放,這個在以前項目沒有注意徹底釋放使用到Excel對象,對客戶計算機資源造成一定浪費,此次得到徹底解決。

下面是一個C#讀寫Excel文件并打印輸出的Demo

1、 創(chuàng)建一個叫DemoExcel的項目
 
2、 引用COM,包括:Microsoft.Excel.x.0.Object.Library,Microsoft.Office.x.0.Object.Library
 
建議安裝正版OFFICE,而且版本在11.0以上(Office2003以上),引用以上兩個Com后,在項目引用欄發(fā)現(xiàn)多了Excel、Microsoft.Office.Core,VBIDE三個 Library.

3、 下面建立一些模擬的數(shù)據(jù),此處為街鎮(zhèn)信息
 

  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. using Microsoft.Office.Interop.Excel;  
  9. using Microsoft.Office.Core;  
  10. using System.IO;  
  11. using System.Reflection;  
  12.  
  13. namespace DemoExcel  
  14. ...{  
  15.     public partial class Form1 : Form  
  16.     ...{  
  17.         private  object missing = Missing.Value;  
  18.         private Microsoft.Office.Interop.Excel.Application ExcelRS;  
  19.         private Microsoft.Office.Interop.Excel.Workbook RSbook;  
  20.         private Microsoft.Office.Interop.Excel.Worksheet RSsheet;  
  21.  
  22.         public Form1()  
  23.         ...{  
  24.             InitializeComponent();  
  25.         }  
  26.  
  27.         private void Form1_Load(object sender, EventArgs e)  
  28.         ...{  
  29.             // TODO: 這行代碼將數(shù)據(jù)加載到表“dataSet1.STREET”中。您可以根據(jù)需要移動或移除它。  
  30.             this.sTREETTableAdapter.Fill(this.dataSet1.STREET);  
  31.  
  32.         }  
  33.  
  34.         private void button1_Click(object sender, EventArgs e)  
  35.         ...{  
  36.             string OutFilePath = System.Windows.Forms.Application.StartupPath + @" emp.xls";  
  37.              
  38.             string TemplateFilePath = System.Windows.Forms.Application.StartupPath + @"模版.xls";  
  39.             PrintInit(TemplateFilePath,OutFilePath);  
  40.         }  
  41.         Excle輸出前初始化#region Excle輸出前初始化  
  42.         /**////   
  43.         ///   
  44.         ///   
  45.         ///   
  46.         public bool PrintInit(string templetFile, string outputFile)  
  47.         ...{  
  48.             try 
  49.             ...{  
  50.                 if (templetFile == null)  
  51.                 ...{  
  52.                     MessageBox.Show("Excel模板文件路徑不能為空!");  
  53.                     return false;  
  54.                 }  
  55.                 if (outputFile == null)  
  56.                 ...{  
  57.                     MessageBox.Show("輸出Excel文件路徑不能為空!");  
  58.                     return false;  
  59.                 }  
  60.                 //把模版文件templetFile拷貝到目輸出文件outputFile中,并且目標文件可以改寫  
  61.                 System.IO.File.Copy(templetFile, outputFile, true);  
  62.                 if (this.ExcelRS != null)  
  63.                     ExcelRS = null;  
  64.                 //實例化ExcelRS對象  
  65.                 ExcelRS = new Microsoft.Office.Interop.Excel.ApplicationClass();  
  66.                 //打開目標文件outputFile  
  67.                 RSbook = ExcelRS.Workbooks.Open(outputFile, missing, missing, missing, missing, missing,  
  68.                     missing, missing, missing, missing, missing, missing, missing, missing, missing);  
  69.                 //設置第一個工作溥  
  70.                 RSsheet = (Microsoft.Office.Interop.Excel.Worksheet)RSbook.Sheets.get_Item(1);  
  71.                 //激活當前工作溥  
  72.                 RSsheet.Activate();  
  73.                   
  74.                 在當前工作溥寫入內容#region 在當前工作溥寫入內容  
  75.                 for (int i = 0; i < this.dataGridView1.RowCount; i++)  
  76.                 ...{  
  77.                     RSsheet.Cells[3 + i, 1] = this.dataGridView1[0, i].Value.ToString();  
  78.                     RSsheet.Cells[3 + i, 2] = this.dataGridView1[1, i].Value.ToString();  
  79.                     RSsheet.Cells[3 + i, 3] = this.dataGridView1[2, i].Value.ToString();  
  80.                 }   
  81.                 #endregion  
  82.  
  83.                 //保存目標文件  
  84.                 RSbook.Save();  
  85.                 //設置DisplayAlerts  
  86.                 ExcelRS.DisplayAlerts = false;  
  87.                 ExcelRS.Visible = true;  
  88.                 //ExcelRS.DisplayAlerts = true;  
  89.  
  90.                 //釋放對象  
  91.                 RSsheet = null;  
  92.                 RSbook = null;  
  93.                 ExcelRS = null;  
  94.                 //釋放內存  
  95.                 GcCollect();  
  96.             }  
  97.             catch (Exception ex)  
  98.             ...{  
  99.                 MessageBox.Show(ex.ToString());  
  100.                 return false;  
  101.             }  
  102.             return true;  
  103.         }  
  104.         #endregion  
  105.         public void GcCollect()  
  106.         ...{  
  107.             GC.Collect();  
  108.             GC.WaitForPendingFinalizers();  
  109.             GC.Collect();  
  110.             GC.WaitForPendingFinalizers();  
  111.         }  
  112.     }  

特別說明:

a、引用Microsoft.Office.Interop.Excel;using Microsoft.Office.Core;

b、(關鍵)在程序中特別釋放Excel資源的時候既要設置對象為null,又要強制回收內存,這樣才能徹底回收資源。

c、引用的Office組建版本是個敏感問題,不同版本之間有細微差別,需要分別處理。

本文來自曾玄昴CSDN博客中的文章《C#讀寫Excel文檔(---續(xù)C#讀寫Word文件)

【編輯推薦】

  1. C#運算符重載實現(xiàn)復數(shù)運算
  2. C#運算符重載實例解析
  3. C#運算符重載的一些總結
  4. C#運算符重載“>”的操作淺析
  5. C#運算符優(yōu)先級介紹
責任編輯:彭凡 來源: CSDN博客
相關推薦

2009-08-07 13:30:20

C# Excel導入

2009-08-12 14:01:17

C# Excel編程技

2009-08-13 09:34:55

C#讀寫ini文件

2009-08-07 18:07:58

C#數(shù)據(jù)庫開發(fā)

2009-09-02 14:06:14

C#文件傳送

2024-04-25 12:35:14

JSONC#開發(fā)

2009-09-01 14:39:47

C#創(chuàng)建Excel文件

2024-04-25 12:59:31

2009-09-02 14:00:34

C#文件處理

2009-08-11 14:36:41

C#讀取Excel

2009-08-14 16:08:34

讀寫B(tài)inaryC#編程實例

2009-08-07 12:12:00

C#讀取Excel文件

2009-08-27 16:54:59

C#開發(fā)技巧

2009-08-11 15:44:05

C#基本技巧

2021-12-01 07:19:44

C# Npoi Excel

2011-05-20 15:37:05

MemoryStrea

2009-08-20 10:53:23

C#操作內存

2010-01-18 10:16:58

學習C++

2009-08-05 18:39:54

C#異常類

2009-08-21 08:41:44

C#反射
點贊
收藏

51CTO技術棧公眾號