<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      VSTO學(xué)習(xí)筆記(五)批量編輯Excel 2010 x64

      近期因?yàn)楣ぷ鞯男枰?,?jīng)常要批量處理大量的Excel文件,如果純手工一個(gè)個(gè)修改,非常的麻煩,于是寫(xiě)了這么一個(gè)幫助類,希望能對(duì)你有所幫助。里面很多方法可以進(jìn)一步推廣,增減適當(dāng)?shù)膮?shù),部分方法用到了C# 4.0新特性,如果需要調(diào)試,請(qǐng)安裝Visual Studio 2010。

      示例代碼下載

      本系列所有示例代碼均在 Visual Studio 2010 Ultimate RC + Office 2010 Professional Plus Beta x64 上測(cè)試通過(guò)。 

       

      首先添加引用:

      using Microsoft.Office.Interop.Excel;

      using System.Drawing;

      using System.IO;

       

      代碼
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using Microsoft.Office.Interop.Excel;
      using System.Drawing;
      using System.IO;

      namespace ExcelHelp
      {
          
      /// <summary>
          
      /// Date: 2010.03.31
          
      /// Author: Mr.Brooks
          
      /// HomePage: http://www.rzrgm.cn/brooks-dotnet/
          
      /// Email: undead_47@163.com
          
      /// </summary>
          class ExcelHelp
          {
              
      /// <summary>
              
      /// 將一個(gè)工作簿中一個(gè)工作表中的內(nèi)容復(fù)制到另一個(gè)工作簿的一個(gè)工作表中
              
      /// </summary>
              
      /// <param name="v_strSourceWorkbook">源工作薄的完整路徑</param>
              
      /// <param name="v_strSourceWorksheet">源工作表名</param>
              
      /// <param name="v_strDestWorkbook">目標(biāo)工作薄的完整路徑</param>
              
      /// <param name="v_strDestWorksheet">目的工作表名</param>
              private static void fnCopy(string v_strSourceWorkbook, string v_strSourceWorksheet, string v_strDestWorkbook, string v_strDestWorksheet)
              {
                  Application app 
      = new Application();
                  Workbook srcbook 
      = app.Workbooks.Open(v_strSourceWorkbook);
                  Worksheet srcsheet 
      = srcbook.Worksheets[v_strSourceWorksheet];

                  Workbook destbook 
      = app.Workbooks.Open(v_strDestWorkbook);
                  Worksheet destsheet 
      = destbook.Worksheets[v_strDestWorksheet];

                  
      try
                  {
                      
      //Worksheet.UsedRange: 獲取工作表中所使用的范圍
                      for (int i = 1; i <= srcsheet.UsedRange.Rows.Count; i++)
                      {
                          
      for (int j = 1; j <= srcsheet.UsedRange.Columns.Count; j++)
                          {
                              
      //將Excel的顏色與RGB聯(lián)系起來(lái)
                              if (srcsheet.Cells[i, j].Interior.Color != ColorTranslator.ToOle(Color.FromArgb(255204153)))
                              {
                                  destsheet.Cells[i, j].Value2 
      = srcsheet.Cells[i, j].Value2;
                              }
                          }
                      }
                      
      //屏蔽Excel的提示信息
                      app.Application.DisplayAlerts = false;
                      destbook.Save();
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally 
                  {
                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(srcbook);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(srcsheet);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(destbook);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(destsheet);

                      app 
      = null;
                      srcbook 
      = null;
                      destbook 
      = null;
                      srcsheet 
      = null;
                      destsheet 
      = null;
                      GC.Collect();
                  }
              }

       

      Range.Interior.Color是Office中表示顏色的方法,其返回一個(gè)整數(shù),表示一種特定的顏色:

       但是我們平時(shí)用的最多的是RGB表示的顏色,可以用

      srcsheet.Cells[i, j].Interior.Color != ColorTranslator.ToOle(Color.FromArgb(255204153))

      將ColorIndex與RGB進(jìn)行關(guān)聯(lián)。

       

       

      代碼
              /// <summary>
              
      /// 判斷一個(gè)工作簿的一個(gè)工作表有沒(méi)有添加保護(hù)
              
      /// </summary>
              
      /// <param name="v_strDir">工作簿的完整路徑</param>
              
      /// <param name="v_strSheetName">工作表名</param>
              private static void fn判斷工作表是否被保護(hù)(string v_strDir, string v_strSheetName)
              {
                  StringBuilder sb 
      = new StringBuilder();
                  Application app 
      = new Application();
                  DirectoryInfo dir 
      = new DirectoryInfo(v_strDir);

                  
      try
                  {
                      
      //遞歸查找所有Excel 2007/2010的文件
                      foreach (FileInfo f in dir.GetFiles("*.xlsx", SearchOption.AllDirectories))
                      {
                          Workbook book 
      = app.Workbooks.Open(f.FullName);
                          
      if (book.Worksheets[v_strSheetName].ProtectContents)
                          {
                              sb.Append(book.Name 
      + ",");
                          }
                          app.Application.DisplayAlerts 
      = false;
                          book.Save();
                      }
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally
                  {
                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      app 
      = null;
                      GC.Collect();
                  }

                  Console.WriteLine(sb.ToString());
              }

      若不知道Excel工作簿或工作表的密碼,可以用Passware進(jìn)行破解,經(jīng)過(guò)測(cè)試,Passware 可以破解Office 2003/2007/2010,其官方主頁(yè)稱可以破解Windows 7 的 BitLocker 加密技術(shù)。

       

       

      代碼
              /// <summary>
              
      /// 判斷一個(gè)工作表中所有的單元格是否包含公式
              
      /// </summary>
              
      /// <param name="v_strPath">工作簿的完整路徑</param>
              private static void fn判斷單元格是否包含公式(string v_strPath)
              {
                  StringBuilder sb 
      = new StringBuilder();
                  Application app 
      = new Application();
                  DirectoryInfo dir 
      = new DirectoryInfo(v_strPath);

                  
      try
                  {
                      
      foreach (FileInfo file in dir.GetFiles("*.xlsx", SearchOption.AllDirectories))
                      {
                          Workbook book 
      = app.Workbooks.Open(file.FullName);
                          
      foreach (Worksheet sheet in book.Worksheets)
                          {
                              
      for (int i = 1; i < sheet.UsedRange.Rows.Count; i++)
                              {
                                  
      for (int j = 1; j < sheet.UsedRange.Columns.Count; j++)
                                  {
                                      
      if (sheet.Cells[i, j].Interior.Color != ColorTranslator.ToOle(Color.FromArgb(255204153)))
                                      {
                                          
      if (sheet.Cells[i, j].HasFormula)
                                          {
                                              sb.Append(book.Name 
      + " " + sheet.Name + " 第" + i.ToString() + "行第" + j.ToString() + "列包含公式!\n");
                                          }
                                      }
                                  }
                              }
                          }
                      }
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally
                  {
                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      app 
      = null;
                      GC.Collect();
                  }

                  Console.WriteLine(sb.ToString());
              }

       

       

       

      代碼
              /// <summary>
              
      /// 獲取指定工作簿的所有工作表
              
      /// </summary>
              
      /// <param name="v_strDir">工作簿的完整路徑</param>
              private static void fn獲取指定工作簿的所有工作表(string v_strDir)
              {
                  StringBuilder sb 
      = new StringBuilder();
                  Application app 
      = new Application();
                  DirectoryInfo dir 
      = new DirectoryInfo(v_strDir);

                  
      try
                  {
                      
      foreach (FileInfo f in dir.GetFiles("*.xlsx", SearchOption.AllDirectories))
                      {
                          Workbook book 
      = app.Workbooks.Open(f.FullName);
                          sb.Append(book.Name);
                          
      foreach (Worksheet sheet in book.Worksheets)
                          {
                              sb.Append(sheet.Name 
      + " ");
                          }
                          sb.Append(
      "\n");
                          app.Application.DisplayAlerts 
      = false;
                          book.Save();
                      }
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally
                  {
                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      app 
      = null;
                      GC.Collect();
                  }

                  Console.WriteLine(sb.ToString());
              }

       

       

      批量轉(zhuǎn)換Excel的格式

       

      代碼
              /// <summary>
              
      /// 批量轉(zhuǎn)換Excel 2003 至Excel 2007/2010格式
              
      /// 可以修改XlFileFormat枚舉的值來(lái)轉(zhuǎn)換為想要的格式
              
      /// </summary>
              
      /// <param name="v_strDir">工作簿的查找路徑</param>
              private static void fn批量轉(zhuǎn)換Excel文件格式(string v_strDir)
              {
                  Application app 
      = new Application();
                  DirectoryInfo dir 
      = new DirectoryInfo(v_strDir);
                  Workbook book;
                  app.Application.DisplayAlerts 
      = false;

                  
      try
                  {
                      
      foreach (FileInfo fi in dir.GetFiles("*.xls", SearchOption.AllDirectories))
                      {
                          book 
      = app.Workbooks.Open(fi.FullName);
                          book.SaveAs(fi.DirectoryName 
      + @"\" + fi.Name.Replace(fi.Extension, string.Empty) + ".xlsx", XlFileFormat.xlOpenXMLWorkbook);
                      }
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally
                  {
                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      app 
      = null;
                      GC.Collect();
                  }
              }

       

       

      比較兩個(gè)工作表的內(nèi)容

       

      代碼
              /// <summary>
              
      /// 比較兩個(gè)工作表的內(nèi)容
              
      /// </summary>
              
      /// <param name="v_strSourcePath">第一個(gè)工作簿的路徑</param>
              
      /// <param name="v_strDestPath">第二個(gè)工作簿的路徑</param>
              private static void fn比較兩個(gè)工作表的內(nèi)容(string v_strSourcePath, string v_strDestPath)
              {
                  Application app 
      = new Application();
                  Workbook srcBook 
      = app.Workbooks.Open(v_strSourcePath);
                  Workbook destBook 
      = app.Workbooks.Open(v_strDestPath);

                  
      //記錄查找結(jié)果到本文文件中
                  FileStream fs = new FileStream("log.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
                  StreamWriter sw 
      = new StreamWriter(fs);

                  
      try
                  {
                      
      foreach (Worksheet sheet in srcBook.Worksheets)
                      {
                          
      for (int i = 1; i <= sheet.UsedRange.Rows.Count; i++)
                          {
                              
      for (int j = 1; j <= sheet.UsedRange.Columns.Count; j++)
                              {
                                  
      if (sheet.Cells[i, j].Interior.Color != ColorTranslator.ToOle(Color.FromArgb(255204153)))
                                  {
                                      
      string src = sheet.Cells[i, j].Value == null ? string.Empty : sheet.Cells[i, j].Value.ToString();
                                      
      string dest = destBook.Worksheets[sheet.Name].Cells[i, j].Value == null ? string.Empty : destBook.Worksheets[sheet.Name].Cells[i, j].Value.ToString();

                                      
      if (src != dest)
                                      {
                                          sw.WriteLine(
      @"當(dāng)前工作表: " + sheet.Name + " 第" + i + "" + j + "列數(shù)據(jù)不相同!");
                                      }
                                  }
                              }
                          }
                      }
                  }
                  
      catch (Exception ex)
                  {
                      
      throw ex;
                  }
                  
      finally 
                  {
                      sw.Flush();
                      sw.Close();
                      app.Application.DisplayAlerts 
      = false;
                      srcBook.Save();
                      destBook.Save();

                      app.Quit();
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(app);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(srcBook);
                      System.Runtime.InteropServices.Marshal.ReleaseComObject(destBook);
                      app 
      = null;
                      srcBook 
      = null;
                      destBook 
      = null;
                      GC.Collect();
                  }
              }

       

       

      小結(jié):

      本次通過(guò)一系列的實(shí)例探討了Excel的操作方法,我覺(jué)得還挺實(shí)用,你可以根據(jù)需求進(jìn)行完善。代碼僅供測(cè)試,如果欲操作的Excel數(shù)量巨大,請(qǐng)謹(jǐn)慎使用。

      后續(xù)篇章我會(huì)繼續(xù)研究Excel中的操作。

      posted @ 2010-03-31 20:24  江蘇瑞步科技  閱讀(5665)  評(píng)論(6)    收藏  舉報(bào)
      主站蜘蛛池模板: 97人人超碰国产精品最新| 亚洲色大成永久WW网站| 亚洲中文无码av永久不收费| 激情综合网激情综合| 欧美大胆老熟妇乱子伦视频 | 国产精品无码久久久久AV| 国产精品爆乳在线播放第一人称| 男女猛烈激情xx00免费视频| 粉嫩一区二区三区精品视频| 国产精品大全中文字幕| 日本一卡2卡3卡四卡精品网站 | 精品少妇爆乳无码aⅴ区| 成年女人喷潮免费视频| 颍上县| 亚洲一区二区国产av| 深夜av免费在线观看| 精品无码国产一区二区三区51安 | 亚洲深夜精品在线观看| 国产伦一区二区三区视频| 国产亚洲精品第一综合另类无码无遮挡又大又爽又黄的视频 | 精品无码人妻一区二区三区| 亚洲国产美女精品久久久| 欧美日韩不卡视频合集| 日韩一区二区三区精彩视频| 日本精品一区二区不卡| 欧美疯狂xxxxbbbb喷潮| 日韩在线不卡免费视频一区| 日韩理伦片一区二区三区| 国产稚嫩高中生呻吟激情在线视频 | 果冻传媒18禁免费视频| 成人av久久一区二区三区| 精品国偷自产在线视频99| 国产性色av免费观看| 麻豆国产97在线 | 欧美| 日韩少妇人妻vs中文字幕| 风韵丰满熟妇啪啪区老熟熟女| 色综合久久天天综线观看| 亚洲尤码不卡av麻豆| 中文字幕一区二区人妻| 国产伦一区二区三区视频| 国产尤物AV尤物在线看|