C#Excel操作类

  1. ///---------------------------------------------------------------------------
  2. /// 機能ID     :ExcelAccess
  3. ///
  4. /// 機能名     :Excel操作クラス
  5. ///
  6. /// システム   :バッチもばっちり
  7. ///
  8. /// 作成日     :2008年6月5日
  9. ///
  10. /// 作成者     :
  11. ///
  12. /// 機能説明   :Excelに対して操作を提供する。
  13. ///---------------------------------------------------------------------------
  14. using System;
  15. using System.Data;
  16. using System.Configuration;
  17. using System.Collections;
  18. using Microsoft.Office.Core;
  19. namespace CommonPrj
  20. {
  21.     public class ExcelAccess
  22.     {
  23.         private Excel.Application m_objExcelApp;              //Excelのインスタンス
  24.         private Excel.Workbook m_objExcelWorkBook;            //ワークブックのインスタンス
  25.         private Excel.Worksheet m_objExcelWorkSheet;          //ワークシートのインスタンス
  26.         private Excel.Worksheet m_objTempWorkSheet;           //臨時ワークシート
  27.         ///--------------------------------------------------------------------------
  28.         ///
  29.         /// 機能     :コンストラクタ
  30.         ///
  31.         /// 返り値   :なし
  32.         ///
  33.         /// 引き数   :なし
  34.         ///
  35.         /// 作成日   :2008年6月5日
  36.         ///
  37.         /// 作成者   :
  38.         ///
  39.         /// 機能説明 :コンストラクタ
  40.         ///
  41.         /// 注意事項 :なし
  42.         ///
  43.         ///--------------------------------------------------------------------------
  44.         public ExcelAccess()
  45.         {
  46.             //Excelのインスタンスの生成を行う。
  47.             m_objExcelApp = new Excel.Application();
  48.             m_objExcelApp.DisplayAlerts = false;
  49.         }
  50.         ///--------------------------------------------------------------------------
  51.         ///
  52.         /// 機能     :Excelファイルのオープン操作
  53.         ///
  54.         /// 返り値   :なし
  55.         ///
  56.         /// 引き数   :p_strExcelFileName - Excelファイル名
  57.         ///
  58.         /// 作成日   :2008年6月5日
  59.         ///
  60.         /// 作成者   :
  61.         ///
  62.         /// 機能説明 :Excelファイルのオープン操作を行う。
  63.         ///
  64.         /// 注意事項 :なし
  65.         ///
  66.         ///--------------------------------------------------------------------------
  67.         public void OpenExcelFile(string p_strExcelFileName)
  68.         {
  69.             //Excelフォーマットファイルを開く
  70.             m_objExcelWorkBook = m_objExcelApp.Workbooks.Open( p_strExcelFileName, Type.Missing, 
  71.                 true,Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
  72.                 Type.Missing,Type.Missing,Type.Missing,Type.Missing,Type.Missing,
  73.                 Type.Missing,Type.Missing);
  74.         }
  75.         ///--------------------------------------------------------------------------
  76.         ///
  77.         /// 機能     :Excelファイルのオープン操作
  78.         ///
  79.         /// 返り値   :なし
  80.         ///
  81.         /// 引き数   :p_strExcelFileName - Excelファイル名
  82.         ///           p_ReadOnlyFlag - ReadOnlyFlag
  83.         ///
  84.         /// 作成日   :2008年6月5日
  85.         ///
  86.         /// 作成者   :
  87.         ///
  88.         /// 機能説明 :Excelファイルのオープン操作を行う。
  89.         ///
  90.         /// 注意事項 :なし
  91.         ///
  92.         ///--------------------------------------------------------------------------
  93.         public void OpenExcelFile(string p_strExcelFileName,bool p_ReadOnlyFlag)
  94.         {
  95.             //Excelフォーマットファイルを開く
  96.             m_objExcelWorkBook = m_objExcelApp.Workbooks.Open(p_strExcelFileName, Type.Missing,
  97.                 p_ReadOnlyFlag, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  98.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, 
  99.                 Type.Missing, Type.Missing, Type.Missing);
  100.         }
  101.         ///--------------------------------------------------------------------------
  102.         ///
  103.         /// 機能     :Excelのワークシートのオープン操作
  104.         ///
  105.         /// 返り値   :なし
  106.         ///
  107.         /// 引き数   :p_strSheetName - ワークシート名
  108.         ///
  109.         /// 作成日   :2008年6月5日
  110.         ///
  111.         /// 作成者   :
  112.         ///
  113.         /// 機能説明 :Excelのワークシートのオープン操作を行う。
  114.         ///
  115.         /// 注意事項 :なし
  116.         ///
  117.         ///--------------------------------------------------------------------------
  118.         public void SelectSheet(string p_strSheetName)
  119.         {
  120.             //入力したワークシート名より、Excelのワークシートを選択する
  121.             m_objExcelWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
  122.         }
  123.         ///--------------------------------------------------------------------------
  124.         ///
  125.         /// 機能     :Excelのワークシートのオープン操作
  126.         ///
  127.         /// 返り値   :なし
  128.         ///
  129.         /// 引き数   :なし
  130.         ///
  131.         /// 作成日   :2008年6月5日
  132.         ///
  133.         /// 作成者   :
  134.         ///
  135.         /// 機能説明 :ExcelのActiveシートのオープン操作を行う。
  136.         ///
  137.         /// 注意事項 :なし
  138.         ///
  139.         ///--------------------------------------------------------------------------
  140.         public void SelectSheet()
  141.         {
  142.             //ExcelのActiveシートを選択する
  143.             m_objExcelWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.ActiveSheet;
  144.         }
  145.         ///--------------------------------------------------------------------------
  146.         ///
  147.         /// 機能     :Excelのワークシートのオープン操作
  148.         ///
  149.         /// 返り値   :p_intSheetIndex - ワークシート番号
  150.         ///
  151.         /// 引き数   :なし
  152.         ///
  153.         /// 作成日   :2008年6月5日
  154.         ///
  155.         /// 作成者   :
  156.         ///
  157.         /// 機能説明 :ExcelのActiveシートのオープン操作を行う。
  158.         ///
  159.         /// 注意事項 :なし
  160.         ///
  161.         ///--------------------------------------------------------------------------
  162.         public void SelectSheet(int p_intSheetIndex)
  163.         {
  164.             m_objExcelWorkSheet =(Excel.Worksheet)m_objExcelWorkBook.Sheets[p_intSheetIndex];
  165.         }
  166.         ///--------------------------------------------------------------------------
  167.         ///
  168.         /// 機能     :Excelの一時ワークシートのオープン操作
  169.         ///
  170.         /// 返り値   :なし
  171.         ///
  172.         /// 引き数   :p_strSheetName - ワークシート名
  173.         ///
  174.         /// 作成日   :2008年6月5日
  175.         ///
  176.         /// 作成者   :
  177.         ///
  178.         /// 機能説明 :Excelの一時ワークシートのオープン操作を行う。
  179.         ///
  180.         /// 注意事項 :なし
  181.         ///
  182.         ///--------------------------------------------------------------------------
  183.         public void SelectTempSheet(string p_strSheetName)
  184.         {
  185.             m_objTempWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
  186.         }
  187.         ///--------------------------------------------------------------------------
  188.         ///
  189.         /// 機能     :Excelワークシートのコピー処理
  190.         ///
  191.         /// 返り値   :Integer - Excelの最大行
  192.         ///
  193.         /// 引き数   :なし
  194.         ///
  195.         /// 作成日   :2008年6月3日
  196.         ///
  197.         /// 作成者   :
  198.         ///
  199.         /// 機能説明 :Excelワークシートのコピー処理を行う。
  200.         ///
  201.         /// 注意事項 :なし
  202.         ///
  203.         ///--------------------------------------------------------------------------
  204.         public void CopyWorkSheet()
  205.         {
  206.             m_objExcelWorkSheet.Copy(Type.Missing, 
  207.                 m_objExcelWorkBook.Sheets[SheetCount()]);
  208.         }
  209.         ///--------------------------------------------------------------------------
  210.         ///
  211.         /// 機能     :Excelワークシート数取得処理
  212.         ///
  213.         /// 返り値   :Integer - Excelのワークシート数
  214.         ///
  215.         /// 引き数   :なし
  216.         ///
  217.         /// 作成日   :2008年6月3日
  218.         ///
  219.         /// 作成者   :
  220.         ///
  221.         /// 機能説明 :Excelワークシート数の取得処理を行う。
  222.         ///
  223.         /// 注意事項 :なし
  224.         ///
  225.         ///--------------------------------------------------------------------------
  226.         public int SheetCount()
  227.         {
  228.             return m_objExcelWorkBook.Sheets.Count;
  229.         }
  230.         ///--------------------------------------------------------------------------
  231.         ///
  232.         /// 機能     :Excelワークシート名の取得処理
  233.         ///
  234.         /// 返り値   :Excelワークシート名
  235.         ///
  236.         /// 引き数   :なし
  237.         ///
  238.         /// 作成日   :2008年6月3日
  239.         ///
  240.         /// 作成者   :
  241.         ///
  242.         /// 機能説明 :Excelワークシート名の取得処理を行う。
  243.         ///
  244.         /// 注意事項 :なし
  245.         ///
  246.         ///--------------------------------------------------------------------------
  247.         public string SheetName()
  248.         {
  249.             Excel.Worksheet objWorkSheet = (Excel.Worksheet)m_objExcelWorkBook.ActiveSheet;
  250.             return objWorkSheet.Name;
  251.         }
  252.         ///--------------------------------------------------------------------------
  253.         ///
  254.         /// 機能     :Excelのセルの内容設定処理
  255.         ///
  256.         /// 返り値   :なし
  257.         ///
  258.         /// 引き数   :p_intRows - Excelの行
  259.         ///           p_intColumn - Excelの列
  260.         ///           p_strValue - 設定項目
  261.         ///
  262.         /// 作成日   :2008年6月3日
  263.         ///
  264.         /// 作成者   :
  265.         ///
  266.         /// 機能説明 :Excelのセルの内容設定処理を行う。
  267.         ///
  268.         /// 注意事項 :なし
  269.         ///
  270.         ///--------------------------------------------------------------------------
  271.         public void SetCellValue(int p_intRows, int p_intColumn, string p_strValue)
  272.         {
  273.             //セルの内容を設定する。
  274.             if (p_intRows <= 65528)
  275.             {
  276.                 m_objExcelWorkSheet.Cells[p_intRows, p_intColumn] = p_strValue;
  277.             }
  278.         }
  279.         ///--------------------------------------------------------------------------
  280.         ///
  281.         /// 機能     :Excelのセルの内容取得処理
  282.         ///
  283.         /// 返り値   :取得したExcelのセル
  284.         ///
  285.         /// 引き数   :p_intRows - Excelの行
  286.         ///           p_intColumn - Excelの列
  287.         ///
  288.         /// 作成日   :2008年6月3日
  289.         ///
  290.         /// 作成者   :
  291.         ///
  292.         /// 機能説明 :Excelのセルの内容取得処理を行う。
  293.         ///
  294.         /// 注意事項 :なし
  295.         ///
  296.         ///--------------------------------------------------------------------------
  297.         public string GetCellValue(int p_intRows, int p_intColumn)
  298.         {
  299.             if (p_intRows <= 65536)
  300.             {
  301.                 Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells[p_intRows, p_intColumn];
  302.                 //セルの内容取得処理
  303.                 if (objRange.Text == null)
  304.                 {
  305.                     return string.Empty;
  306.                 }
  307.                 else
  308.                 {
  309.                     return objRange.Text.ToString();
  310.                 }
  311.             }
  312.             else
  313.             {
  314.                 return string.Empty;
  315.             }
  316.         }
  317.         ///--------------------------------------------------------------------------
  318.         ///
  319.         /// 機能     :Excelの印刷処理
  320.         ///
  321.         /// 返り値   :なし
  322.         ///
  323.         /// 引き数   :p_strStartCell - Excelの開始のセル
  324.         ///           p_strEndCell - Excelの終了のセル
  325.         ///
  326.         /// 作成日   :2008年6月3日
  327.         ///
  328.         /// 作成者   :
  329.         ///
  330.         /// 機能説明 :Excelの印刷処理を行う。
  331.         ///
  332.         /// 注意事項 :なし
  333.         ///
  334.         ///--------------------------------------------------------------------------
  335.         public void SetPageArea(string p_strStartCell,string p_strEndCell)
  336.         {
  337.             m_objExcelWorkSheet.PageSetup.PrintArea = 
  338.                 p_strStartCell + ":" + p_strEndCell;
  339.         }
  340.         ///--------------------------------------------------------------------------
  341.         ///
  342.         /// 機能     :指定のExcelファイルによって、名前を付けて保存処理
  343.         ///
  344.         /// 返り値   :なし
  345.         ///
  346.         /// 引き数   :p_strName - 名前を付けて保存のファイル名
  347.         ///
  348.         /// 作成日   :2008年6月5日
  349.         ///
  350.         /// 作成者   :
  351.         ///
  352.         /// 機能説明 :指定のExcelファイルによって、名前を付けて保存処理を行う。
  353.         ///
  354.         /// 注意事項 :なし
  355.         ///
  356.         ///--------------------------------------------------------------------------
  357.         public void SaveAs(string p_strName)
  358.         {
  359.             //指定のExcelファイルによって、名前を付けて保存処理
  360.             m_objExcelWorkBook.SaveAs(p_strName, Type.Missing, Type.Missing, Type.Missing, 
  361.                 Type.Missing,Type.Missing,Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing,
  362.                 Type.Missing,Type.Missing,Type.Missing,Type.Missing);
  363.         }
  364.         ///--------------------------------------------------------------------------
  365.         ///
  366.         /// 機能     :指定のExcelファイルによって、保存処理
  367.         ///
  368.         /// 返り値   :なし
  369.         ///
  370.         /// 引き数   :なし
  371.         ///
  372.         /// 作成日   :2008年6月5日
  373.         ///
  374.         /// 作成者   :
  375.         ///
  376.         /// 機能説明 :指定のExcelファイルによって、名前を付けて保存処理を行う。
  377.         ///
  378.         /// 注意事項 :なし
  379.         ///
  380.         ///--------------------------------------------------------------------------
  381.         public void Save()
  382.         {
  383.             m_objExcelWorkBook.Save();
  384.         }
  385.         ///--------------------------------------------------------------------------
  386.         ///
  387.         /// 機能     :Excel最大行の取得処理
  388.         ///
  389.         /// 返り値   :Excelの最大行
  390.         ///
  391.         /// 引き数   :なし
  392.         ///
  393.         /// 作成日   :2008年6月3日
  394.         ///
  395.         /// 作成者   :
  396.         ///
  397.         /// 機能説明 :Excel最大行の取得処理を行う。
  398.         ///
  399.         /// 注意事項 :なし
  400.         ///
  401.         ///--------------------------------------------------------------------------
  402.         public int RowsCount()
  403.         {
  404.             //Excel最大行の取得処理
  405.             return m_objExcelWorkSheet.UsedRange.Rows.Count;
  406.         }
  407.         ///--------------------------------------------------------------------------
  408.         ///
  409.         /// 機能     :Excel最大列の取得処理
  410.         ///
  411.         /// 返り値   :Excelの最大列
  412.         ///
  413.         /// 引き数   :なし
  414.         ///
  415.         /// 作成日   :2008年6月3日
  416.         ///
  417.         /// 作成者   :
  418.         ///
  419.         /// 機能説明 :Excel最大列の取得処理を行う。
  420.         ///
  421.         /// 注意事項 :なし
  422.         ///
  423.         ///--------------------------------------------------------------------------
  424.         public int ColumnCount()
  425.         {
  426.             //Excel最大列の取得処理
  427.             return m_objExcelWorkSheet.UsedRange.Columns.Count;
  428.         }
  429.         ///--------------------------------------------------------------------------
  430.         ///
  431.         /// 機能     :Excelのワークシートの破棄
  432.         ///
  433.         /// 返り値   :なし
  434.         ///
  435.         /// 引き数   :なし
  436.         ///
  437.         /// 作成日   :2008年6月3日
  438.         ///
  439.         /// 作成者   :
  440.         ///
  441.         /// 機能説明 :Excelのワークシートの破棄を行う。
  442.         ///
  443.         /// 注意事項 :なし
  444.         ///
  445.         ///--------------------------------------------------------------------------
  446.         private void CloseWorkBook()
  447.         {
  448.             if (m_objExcelWorkSheet != null)
  449.             {
  450.                 //ワークシートをリリースする。
  451.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelWorkSheet);
  452.                 m_objExcelWorkSheet = null;
  453.             }
  454.             if (m_objTempWorkSheet != null)
  455.             {
  456.                 //ワークシートをリリースする。
  457.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objTempWorkSheet);
  458.                 m_objTempWorkSheet = null;
  459.             }
  460.             if (m_objExcelWorkBook != null)
  461.             {
  462.                 m_objExcelWorkBook.Close(false, Type.Missing, Type.Missing);
  463.                 //ワークブックをリリースする。
  464.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelWorkBook);
  465.                 m_objExcelWorkBook = null;
  466.             }
  467.             GC.Collect();
  468.         }
  469.         ///--------------------------------------------------------------------------
  470.         ///
  471.         /// 機能     :Excelのワークシートの破棄
  472.         ///
  473.         /// 返り値   :なし
  474.         ///
  475.         /// 引き数   :なし
  476.         ///
  477.         /// 作成日   :2008年6月3日
  478.         ///
  479.         /// 作成者   :
  480.         ///
  481.         /// 機能説明 :Excelのワークシートの破棄を行う。
  482.         ///
  483.         /// 注意事項 :なし
  484.         ///
  485.         ///--------------------------------------------------------------------------
  486.         public void Close()
  487.         {
  488.             //ワークブックを保存してからクロースする。
  489.             CloseWorkBook();
  490.             GC.Collect();
  491.         }
  492.         ///--------------------------------------------------------------------------
  493.         ///
  494.         /// 機能     :Excelのアプリケーションの破棄
  495.         ///
  496.         /// 返り値   :なし
  497.         ///
  498.         /// 引き数   :なし
  499.         ///
  500.         /// 作成日   :2008年6月3日
  501.         ///
  502.         /// 作成者   :
  503.         ///
  504.         /// 機能説明 :Excelのアプリケーションの破棄を行う。
  505.         ///
  506.         /// 注意事項 :なし
  507.         ///
  508.         ///--------------------------------------------------------------------------
  509.         private void ExitApp()
  510.         {
  511.             CloseWorkBook();
  512.             //Excelを終了する。
  513.             m_objExcelApp.Quit();
  514.             if (m_objExcelApp != null)
  515.             {
  516.                 //Excelをリリースする。
  517.                 System.Runtime.InteropServices.Marshal.ReleaseComObject(m_objExcelApp);
  518.                 m_objExcelApp = null;
  519.             }
  520.         }
  521.         ///--------------------------------------------------------------------------
  522.         ///
  523.         /// 機能     :Excelのアプリケーションの破棄
  524.         ///
  525.         /// 返り値   :なし
  526.         ///
  527.         /// 引き数   :なし
  528.         ///
  529.         /// 作成日   :2008年6月3日
  530.         ///
  531.         /// 作成者   :
  532.         ///
  533.         /// 機能説明 :Excelのアプリケーションの破棄を行う。
  534.         ///
  535.         /// 注意事項 :なし
  536.         ///
  537.         ///--------------------------------------------------------------------------
  538.         public void ExitApplication()
  539.         {
  540.             ExitApp();
  541.             GC.Collect();
  542.         }
  543.         ///--------------------------------------------------------------------------
  544.         ///
  545.         /// 機能     :FontColorの設定操作
  546.         ///
  547.         /// 返り値   :なし
  548.         ///
  549.         /// 引き数   :p_intRow - Excelの行
  550.         ///           p_intColumn - Excelの列
  551.         ///           p_intColorIndex - Colorのインデックス
  552.         ///
  553.         /// 作成日   :2008年6月5日
  554.         ///
  555.         /// 作成者   :
  556.         ///
  557.         /// 機能説明 :FontColorの設定を行う。
  558.         ///
  559.         /// 注意事項 :なし
  560.         ///
  561.         ///--------------------------------------------------------------------------
  562.         public void ChangeFontColor(int p_intRow, int p_intColumn,int p_intColorIndex)
  563.         {
  564.             if (p_intRow <= 65528)
  565.             {
  566.                 //ExcelのRange取得
  567.                 Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells[p_intRow, p_intColumn];
  568.                 //FontColorの設定操作
  569.                 objRange.Font.ColorIndex = p_intColorIndex;
  570.             }
  571.         }
  572.         ///--------------------------------------------------------------------------
  573.         ///
  574.         /// 機能     :FontColorの設定操作
  575.         ///
  576.         /// 返り値   :なし
  577.         ///
  578.         /// 引き数   :p_intStartRow - Excelの開始行
  579.         ///           p_intStartColumn - Excelの開始列
  580.         ///           p_intEndRow - Excelの終了行
  581.         ///           p_intEndColumn - Excelの終了列
  582.         ///           p_intColorIndex - Colorのインデックス
  583.         ///
  584.         /// 作成日   :2008年6月5日
  585.         ///
  586.         /// 作成者   :
  587.         ///
  588.         /// 機能説明 :FontColorの設定を行う。
  589.         ///
  590.         /// 注意事項 :なし
  591.         ///
  592.         ///--------------------------------------------------------------------------
  593.         public void ChangeFontColor(int p_intStartRow,int p_intStartColumn,int p_intEndRow,
  594.             int p_intEndColumn,int p_intColorIndex)
  595.         {
  596.             if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
  597.             {
  598.                 //ExcelのRange取得
  599.                 Excel.Range objRange = m_objExcelWorkSheet.get_Range(m_objExcelWorkSheet.Cells
  600.                     [p_intStartRow, p_intStartColumn], m_objExcelWorkSheet.Cells
  601.                     [p_intEndRow, p_intEndColumn]);
  602.                 FontColorの設定操作
  603.                 objRange.Font.ColorIndex = p_intColorIndex;
  604.             }
  605.         }
  606.         ///--------------------------------------------------------------------------
  607.         ///
  608.         /// 機能     :Excelファイル指定セルの文字の配置の設定
  609.         ///
  610.         /// 返り値   :なし
  611.         ///
  612.         /// 引き数   :p_intRow - Excelの行
  613.         ///           p_intColumn - Excelの列
  614.         ///           Halign - 横位置文字の配置
  615.         ///           Valign - 縦位置文字の配置
  616.         ///
  617.         /// 作成日   :2008年6月5日
  618.         ///
  619.         /// 作成者   :
  620.         ///
  621.         /// 機能説明 :Excelファイル指定セルの文字の配置の設定を行う。
  622.         ///
  623.         /// 注意事項 :なし
  624.         ///
  625.         ///--------------------------------------------------------------------------
  626.         public void SetAlign(int p_intRow, int p_intColumn,
  627.                 Excel.XlHAlign Halign,Excel.XlVAlign Valign)
  628.         {
  629.             if (p_intRow <= 65528)
  630.             {
  631.                 //ExcelのRange取得
  632.                 Excel.Range objRange = m_objExcelWorkSheet.get_Range
  633.                              (m_objExcelWorkSheet.Cells[p_intRow, p_intColumn],
  634.                              m_objExcelWorkSheet.Cells[p_intRow, p_intColumn]);
  635.                 //横位置文字の配置の設定
  636.                 objRange.HorizontalAlignment = Halign;
  637.                 //縦位置文字の配置の設定
  638.                 objRange.VerticalAlignment = Valign;
  639.             }
  640.         }
  641.         ///--------------------------------------------------------------------------
  642.         ///
  643.         /// 機能     :ExcelのRangeの取得
  644.         ///
  645.         /// 返り値   :取得したExcelのRange
  646.         ///
  647.         /// 引き数   :p_intStartRow - Excelの開始行
  648.         ///           p_intStartColumn - Excelの開始列
  649.         ///           p_intEndRow - Excelの終了行
  650.         ///           p_intEndColumn - Excelの終了列
  651.         ///
  652.         /// 作成日   :2008年6月5日
  653.         ///
  654.         /// 作成者   :
  655.         ///
  656.         /// 機能説明 :ExcelのRangeの取得を行う。
  657.         ///
  658.         /// 注意事項 :なし
  659.         ///
  660.         ///--------------------------------------------------------------------------
  661.         public Excel.Range GetRange(int p_intStartRow, int p_intStartColumn,
  662.             int p_intEndRow, int p_intEndColumn)
  663.         {
  664.             if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
  665.             {
  666.                 Excel.Range objRange = m_objExcelWorkSheet.get_Range
  667.                              (m_objExcelWorkSheet.Cells[p_intStartRow, p_intStartColumn],
  668.                              m_objExcelWorkSheet.Cells[p_intEndRow, p_intEndColumn]);
  669.                 return objRange;
  670.             }
  671.             else
  672.             {
  673.                 return null;
  674.             }
  675.         }
  676.         ///--------------------------------------------------------------------------
  677.         ///
  678.         /// 機能     :Excelファイル指定範囲の色の設定
  679.         ///
  680.         /// 返り値   :なし
  681.         ///
  682.         /// 引き数   :p_intRow - Excelの行
  683.         ///           p_intColumn - Excelの列
  684.         ///           p_intcolorIndex - Colorのインデックス
  685.         ///
  686.         /// 作成日   :2008年6月5日
  687.         ///
  688.         /// 作成者   :
  689.         ///
  690.         /// 機能説明 :Excelファイル指定範囲の文字の配置の設定を行う。
  691.         ///
  692.         /// 注意事項 :なし
  693.         ///
  694.         ///--------------------------------------------------------------------------
  695.         public void SetBackColor(int p_intRow, int p_intColumn,int p_intcolorIndex)
  696.         {
  697.             if (p_intRow <= 65528)
  698.             {
  699.                 Excel.Range objRange = m_objExcelWorkSheet.get_Range
  700.                               (m_objExcelWorkSheet.Cells[p_intRow, p_intColumn],
  701.                               m_objExcelWorkSheet.Cells[p_intRow, p_intColumn]);
  702.                 objRange.Interior.ColorIndex = p_intcolorIndex;
  703.             }
  704.         }
  705.         ///--------------------------------------------------------------------------
  706.         ///
  707.         /// 機能     :Excelファイル指定範囲の色の設定
  708.         ///
  709.         /// 返り値   :なし
  710.         ///
  711.         /// 引き数   :p_intStartRow - Excelの開始行
  712.         ///           p_intStartColumn - Excelの開始列
  713.         ///           p_intEndRow - Excelの終了行
  714.         ///           p_intEndColumn - Excelの終了列
  715.         ///           p_intColorIndex - Colorのインデックス
  716.         ///
  717.         /// 作成日  :2008年6月5日
  718.         ///
  719.         /// 作成者  :
  720.         ///
  721.         /// 機能説明 :Excelファイル指定範囲の文字の配置の設定を行う。
  722.         ///
  723.         /// 注意事項 :なし
  724.         ///
  725.         ///--------------------------------------------------------------------------
  726.         public void SetBackColor(int p_intStartRow, int p_intStartColumn, 
  727.             int p_intEndRow,int p_intEndColumn,int p_intcolorIndex)
  728.         {
  729.             if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
  730.             {
  731.                 Excel.Range objRange = m_objExcelWorkSheet.get_Range
  732.                               (m_objExcelWorkSheet.Cells[p_intStartRow, p_intStartColumn],
  733.                               m_objExcelWorkSheet.Cells[p_intEndRow, p_intEndColumn]);
  734.                 objRange.Interior.ColorIndex = p_intcolorIndex;
  735.             }
  736.         }
  737.         ///--------------------------------------------------------------------------
  738.         ///
  739.         /// 機能     :Excelファイルの行内容のコピー操作
  740.         ///
  741.         /// 返り値   :なし
  742.         ///
  743.         /// 引き数   :p_objFromRange - コピー元の範囲
  744.         ///
  745.         /// 作成日   :2008年6月5日
  746.         ///
  747.         /// 作成者   :
  748.         ///
  749.         /// 機能説明 :Excelファイルの行内容のコピー操作を行う。
  750.         ///
  751.         /// 注意事項 :なし
  752.         ///
  753.         ///--------------------------------------------------------------------------
  754.         public void CopyToClipboard(Excel.Range p_objFromRange)
  755.         {
  756.             p_objFromRange.Copy(Type.Missing);
  757.         }
  758.         ///--------------------------------------------------------------------------
  759.         ///
  760.         /// 機能     :Excelファイルの内容のペースト操作
  761.         ///
  762.         /// 返り値   :なし
  763.         ///
  764.         /// 引き数   :p_objDestRange - コピー先の範囲
  765.         ///
  766.         /// 作成日   :2008年6月5日
  767.         ///
  768.         /// 作成者   :
  769.         ///
  770.         /// 機能説明 :Excelファイルの内容のペースト操作を行う。
  771.         ///
  772.         /// 注意事項 :なし
  773.         ///
  774.         ///--------------------------------------------------------------------------
  775.         public void PasteFromClipboard(Excel.Range p_objDestRange)
  776.         {
  777.             // Excelファイルの内容のペースト操作
  778.             p_objDestRange.PasteSpecial(Excel.XlPasteType.xlPasteAll,
  779.                 Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone,
  780.                 Type.Missing, Type.Missing);
  781.         }
  782.         ///--------------------------------------------------------------------------
  783.         ///
  784.         /// 機能     :Excelファイル指定セルの行高の設定
  785.         ///
  786.         /// 返り値   :なし
  787.         ///
  788.         /// 引き数   :p_intRow - Excelの行
  789.         ///           p_intHeight - 行高
  790.         ///
  791.         /// 作成日   :2008年6月5日
  792.         ///
  793.         /// 作成者   :
  794.         ///
  795.         /// 機能説明 :Excelファイル指定セルの行高の設定を行う。
  796.         ///
  797.         /// 注意事項 :なし
  798.         ///
  799.         ///--------------------------------------------------------------------------
  800.         public void SetRowHeigh(int p_intRow,int p_intHeight)
  801.         {
  802.             int intExcelTotalColumn = ColumnCount();
  803.             // ExcelのRange取得
  804.             if (p_intRow <= 65528)
  805.             {
  806.                 Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.Cells
  807.                     [p_intRow, intExcelTotalColumn];
  808.                 objRange.RowHeight = p_intHeight;
  809.             }
  810.         }
  811.         ///--------------------------------------------------------------------------
  812.         ///
  813.         /// 機能     :Excelファイル指定セルの行高の設定
  814.         ///
  815.         /// 返り値   :なし
  816.         ///
  817.         /// 引き数   :p_intStartRow - Excelの開始行
  818.         ///           p_intEndRow - Excelの終了行
  819.         ///           p_intHeight - 行高
  820.         ///
  821.         /// 作成日   :2008年6月5日
  822.         ///
  823.         /// 作成者   :
  824.         ///
  825.         /// 機能説明 :Excelファイル指定セルの行高の設定を行う。
  826.         ///
  827.         /// 注意事項 :なし
  828.         ///
  829.         ///--------------------------------------------------------------------------
  830.         public void SetRowHeigh(int p_intStartRow,int p_intEndRow,int p_intHeight)
  831.         {
  832.             int intExcelTotalColumn = ColumnCount();
  833.             if (p_intStartRow <= 65528 && p_intEndRow <= 65528)
  834.             {
  835.                 // ExcelのRange取得
  836.                 Excel.Range objRange = (Excel.Range)m_objExcelWorkSheet.get_Range(
  837.                     m_objExcelWorkSheet.Cells[p_intStartRow, intExcelTotalColumn],
  838.                     m_objExcelWorkSheet.Cells[p_intEndRow, intExcelTotalColumn]);
  839.                 objRange.RowHeight = p_intHeight;
  840.             }
  841.         }
  842.         ///--------------------------------------------------------------------------
  843.         ///
  844.         /// 機能     :Excelワークシート名の設定処理
  845.         ///
  846.         /// 返り値   :なし
  847.         ///
  848.         /// 引き数   :p_strOldName - 古いExcelワークシート名
  849.         ///          :p_strNewName - 新しいExcelワークシート名
  850.         ///
  851.         /// 作成日   :2008年6月3日
  852.         ///
  853.         /// 作成者   :
  854.         ///
  855.         /// 機能説明 :Excelワークシート名の設定処理を行う。
  856.         ///
  857.         /// 注意事項 :なし
  858.         ///
  859.         ///--------------------------------------------------------------------------
  860.         public void SetSheetName(string p_strOldName, string p_strNewName)
  861.         {
  862.             Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strOldName];
  863.             objSheet.Name = p_strNewName;
  864.         }
  865.         ///--------------------------------------------------------------------------
  866.         ///
  867.         /// 機能     :Excelワークシートの隠れ処理
  868.         ///
  869.         /// 返り値   :なし
  870.         ///
  871.         /// 引き数   :p_strSheetName - Excelワークシート名
  872.         ///
  873.         /// 作成日   :2008年6月3日
  874.         ///
  875.         /// 作成者   :
  876.         ///
  877.         /// 機能説明 :Excelワークシート名の隠れ処理を行う。
  878.         ///
  879.         /// 注意事項 :なし
  880.         ///
  881.         ///--------------------------------------------------------------------------
  882.         public void HideSheet(string p_strSheetName)
  883.         {
  884.             Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
  885.             objSheet.Visible = Excel.XlSheetVisibility.xlSheetHidden;
  886.         }
  887.         ///--------------------------------------------------------------------------
  888.         ///
  889.         /// 機能     :図形のインデックスの取得
  890.         ///
  891.         /// 返り値   :なし
  892.         ///
  893.         /// 引き数   :p_strShapeName - 図形名
  894.         ///
  895.         /// 作成日   :2008年6月5日
  896.         ///
  897.         /// 作成者   :
  898.         ///
  899.         /// 機能説明 :図形のインデックスの取得
  900.         ///
  901.         /// 注意事項 :なし
  902.         ///
  903.         ///--------------------------------------------------------------------------
  904.         private int ShapeIndex(string p_strShapeName)
  905.         {
  906.             string temp = p_strShapeName.Substring(4);
  907.             return int.Parse(temp);
  908.         }
  909.         ///--------------------------------------------------------------------------
  910.         ///
  911.         /// 機能     :Excelワークシート
  912.         ///
  913.         /// 返り値   :bool - True - 存在  False - 存在しない
  914.         ///
  915.         /// 引き数   :なし
  916.         ///
  917.         /// 作成日   :2008年6月3日
  918.         ///
  919.         /// 作成者   :
  920.         ///
  921.         /// 機能説明 :Excelワークシート数の取得処理を行う。
  922.         ///
  923.         /// 注意事項 :なし
  924.         ///
  925.         ///--------------------------------------------------------------------------
  926.         public bool SheetExist(string p_strSheetName)
  927.         {
  928.             foreach (Excel.Worksheet objSheet in m_objExcelWorkBook.Worksheets)
  929.             {
  930.                 if (objSheet.Name == p_strSheetName)
  931.                 {
  932.                     return true;
  933.                 }
  934.             }
  935.             return false;
  936.         }
  937.         ///--------------------------------------------------------------------------
  938.         ///
  939.         /// 機能     :図形の削除処理
  940.         ///
  941.         /// 返り値   :なし
  942.         ///
  943.         /// 引き数   :なし
  944.         ///
  945.         /// 作成日   :2008年6月3日
  946.         ///
  947.         /// 作成者   :
  948.         ///
  949.         /// 機能説明 :図形の削除処理を行う。
  950.         ///
  951.         /// 注意事項 :なし
  952.         ///
  953.         ///--------------------------------------------------------------------------
  954.         public void DeleteShapes(ArrayList ShapesName)
  955.         {
  956.             foreach (string ShapeName in ShapesName)
  957.             {
  958.                 m_objExcelWorkSheet.Shapes.Item(ShapeName).Delete();
  959.             }
  960.         }
  961.         ///--------------------------------------------------------------------------
  962.         ///
  963.         /// 機能     :図形の罫線作成(実線)
  964.         ///
  965.         /// 返り値   :なし
  966.         ///
  967.         /// 引き数   :p_intStartRow - Excelの開始行
  968.         ///           p_intStartColumn - Excelの開始列
  969.         ///           p_intEndRow - Excelの終了行
  970.         ///           p_intEndColumn - Excelの終了列
  971.         ///
  972.         /// 作成日   :2008年6月3日
  973.         ///
  974.         /// 作成者   :
  975.         ///
  976.         /// 機能説明 :図形の罫線作成を行う。
  977.         ///
  978.         /// 注意事項 :なし
  979.         ///
  980.         ///--------------------------------------------------------------------------
  981.         public void SetSolidBorder(int p_intStartRow, int p_intStartColumn,
  982.             int p_intEndRow, int p_intEndColumn)
  983.         {
  984.             Excel.Range objRange = GetRange(p_intStartRow, p_intStartColumn,
  985.                 p_intEndRow, p_intEndColumn);
  986.             objRange.Borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle =
  987.                 Excel.XlLineStyle.xlLineStyleNone;
  988.             objRange.Borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle =
  989.                 Excel.XlLineStyle.xlLineStyleNone;
  990.             objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle =
  991.                 Excel.XlLineStyle.xlContinuous;
  992.             objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight =
  993.                 Excel.XlBorderWeight.xlMedium;
  994.             objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle =
  995.                Excel.XlLineStyle.xlContinuous;
  996.             objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].Weight =
  997.                 Excel.XlBorderWeight.xlMedium;
  998.             objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle =
  999.                Excel.XlLineStyle.xlContinuous;
  1000.             objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight =
  1001.                 Excel.XlBorderWeight.xlMedium;
  1002.             objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle =
  1003.                Excel.XlLineStyle.xlContinuous;
  1004.             objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].Weight =
  1005.                 Excel.XlBorderWeight.xlMedium;
  1006.             objRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal]
  1007.                 .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
  1008.             objRange.Borders[Excel.XlBordersIndex.xlInsideVertical]
  1009.                 .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
  1010.         }
  1011.         ///--------------------------------------------------------------------------
  1012.         ///
  1013.         /// 機能     :図形の罫線作成(虚線)
  1014.         ///
  1015.         /// 返り値   :なし
  1016.         ///
  1017.         /// 引き数   :p_intStartRow - Excelの開始行
  1018.         ///           p_intStartColumn - Excelの開始列
  1019.         ///           p_intEndRow - Excelの終了行
  1020.         ///           p_intEndColumn - Excelの終了列
  1021.         ///
  1022.         /// 作成日   :2008年6月3日
  1023.         ///
  1024.         /// 作成者   :
  1025.         ///
  1026.         /// 機能説明 :図形の罫線作成を行う。
  1027.         ///
  1028.         /// 注意事項 :なし
  1029.         ///
  1030.         ///--------------------------------------------------------------------------
  1031.         public void SetDotBorder(int p_intStartRow, int p_intStartColumn,
  1032.             int p_intEndRow, int p_intEndColumn)
  1033.         {
  1034.             Excel.Range objRange = GetRange(p_intStartRow, p_intStartColumn,
  1035.                 p_intEndRow, p_intEndColumn);
  1036.             objRange.Borders[Excel.XlBordersIndex.xlDiagonalDown].LineStyle =
  1037.                 Excel.XlLineStyle.xlLineStyleNone;
  1038.             objRange.Borders[Excel.XlBordersIndex.xlDiagonalUp].LineStyle =
  1039.                 Excel.XlLineStyle.xlLineStyleNone;
  1040.             objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle =
  1041.                 Excel.XlLineStyle.xlDashDot;
  1042.             objRange.Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight =
  1043.                 Excel.XlBorderWeight.xlMedium;
  1044.             objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle =
  1045.                Excel.XlLineStyle.xlDashDot;
  1046.             objRange.Borders[Excel.XlBordersIndex.xlEdgeTop].Weight =
  1047.                 Excel.XlBorderWeight.xlMedium;
  1048.             objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle =
  1049.                Excel.XlLineStyle.xlDashDot;
  1050.             objRange.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight =
  1051.                 Excel.XlBorderWeight.xlMedium;
  1052.             objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle =
  1053.                Excel.XlLineStyle.xlDashDot;
  1054.             objRange.Borders[Excel.XlBordersIndex.xlEdgeRight].Weight =
  1055.                 Excel.XlBorderWeight.xlMedium;
  1056.             objRange.Borders[Excel.XlBordersIndex.xlInsideHorizontal]
  1057.                 .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
  1058.             objRange.Borders[Excel.XlBordersIndex.xlInsideVertical]
  1059.                 .LineStyle = Excel.XlLineStyle.xlLineStyleNone;
  1060.         }
  1061.         //--------------------------------------------------------------------------
  1062.         ///
  1063.         /// 機能     :Excelワークシート名の削除処理
  1064.         ///
  1065.         /// 返り値   :Excelワークシート名
  1066.         ///
  1067.         /// 引き数   :なし
  1068.         ///
  1069.         /// 作成日   :2008年6月3日
  1070.         ///
  1071.         /// 作成者   :
  1072.         ///
  1073.         /// 機能説明 :Excelワークシート名の削除処理を行う。
  1074.         ///
  1075.         /// 注意事項 :なし
  1076.         ///
  1077.         ///--------------------------------------------------------------------------
  1078.         public void DeleteWorkSheet(string p_strSheetName)
  1079.         {
  1080.             Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Worksheets[p_strSheetName];
  1081.             objSheet.Delete();
  1082.         }
  1083.         ///--------------------------------------------------------------------------
  1084.         ///
  1085.         /// 機能     :図形の罫線変更処理
  1086.         ///
  1087.         /// 返り値   :なし
  1088.         ///
  1089.         /// 引き数   :なし
  1090.         ///
  1091.         /// 作成日   :2008年6月3日
  1092.         ///
  1093.         /// 作成者   :
  1094.         ///
  1095.         /// 機能説明 :図形の罫線変更処理を行う。
  1096.         ///
  1097.         /// 注意事項 :なし
  1098.         ///
  1099.         ///--------------------------------------------------------------------------
  1100.         public void ChangeShapeStyle(string p_strShapeName)
  1101.         {
  1102.             Excel.Shape objShape = m_objExcelWorkSheet.Shapes.Item(p_strShapeName);
  1103.             objShape.Line.DashStyle = MsoLineDashStyle.msoLineSquareDot;
  1104.         }
  1105.         public void ProtectSheet(string p_strSheetName)
  1106.         {
  1107.             Excel.Worksheet objSheet = (Excel.Worksheet)m_objExcelWorkBook.Sheets[p_strSheetName];
  1108.             objSheet.Protect(Type.Missing, false, Type.Missing, false, Type.Missing, Type.Missing,
  1109.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  1110.                 Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  1111.         }
  1112.         public Excel.Font GetCellFont(int nRow, int nColumn)
  1113.         {
  1114.             Excel.Range objRange =(Excel.Range) m_objExcelWorkSheet.Cells[nRow, nColumn];
  1115.             return objRange.Font;
  1116.         }
  1117.         public Excel.Shapes GetShapes()
  1118.         {
  1119.             return m_objExcelWorkSheet.Shapes;
  1120.         }
  1121.         public int GetShapeCount()
  1122.         {
  1123.             return m_objExcelWorkSheet.Shapes.Count;
  1124.         }
  1125.     }
  1126. }
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
C# NPOI是一个用于在C#中操作Excel的库。NPOI的行和列的索引都是从0开始的。NPOI支持读取Excel文件的两种格式:HSSF(.xls)和XSSF(.xlsx)。使用NPOI进行Excel操作的步骤如下: 1. 首先,将NPOI.dll导入你的项目中。在解决方案资源管理器中,右键点击项目,选择“引用”或“添加引用”,然后选择NPOI.dll进行导入。 2. 接着,引入NPOI的命名空间。在你的代码文件的开头,使用`using NPOI`来引入NPOI的命名空间。 3. 创建一个Workbook对象,表示一个工作簿。可以使用`HSSFWorkbook`或`XSSFWorkbook`类来创建对应格式的工作簿。 4. 获取工作簿中的工作表(Sheet)。可以使用`GetSheetAt`方法来获取指定索引的工作表,也可以使用`GetSheet`方法根据工作表名称来获取。 5. 在工作表中,可以使用`GetRow`方法获取指定索引的行,使用`GetCell`方法获取指定索引的单元格。 6. 对于读取操作,可以使用单元格的`ToString`方法获取单元格的值。对于写入操作,可以使用单元格的`SetCellValue`方法设置单元格的值。 7. 在完成操作后,记得保存工作簿,可以使用`Write`方法将工作簿保存到文件中,也可以使用`WriteTo`方法将工作簿保存到流中。 下面是一个示例代码,演示了如何使用NPOI读取和写入Excel文件: ```csharp using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; // 读取Excel文件 IWorkbook workbook; using (FileStream file = new FileStream("path/to/excel.xlsx", FileMode.Open, FileAccess.Read)) { if (Path.GetExtension(file.Name).Equals(".xls")) workbook = new HSSFWorkbook(file); else workbook = new XSSFWorkbook(file); ISheet sheet = workbook.GetSheetAt(0); for (int rowIndex = 0; rowIndex <= sheet.LastRowNum; rowIndex++) { IRow row = sheet.GetRow(rowIndex); for (int cellIndex = 0; cellIndex < row.LastCellNum; cellIndex++) { ICell cell = row.GetCell(cellIndex); string cellValue = cell.ToString(); Console.WriteLine("Cell({0}, {1}): {2}", rowIndex, cellIndex, cellValue); } } } // 写入Excel文件 using (FileStream file = new FileStream("path/to/new_excel.xlsx", FileMode.Create, FileAccess.Write)) { IWorkbook workbook = new XSSFWorkbook(); ISheet sheet = workbook.CreateSheet("Sheet1"); for (int rowIndex = 0; rowIndex < 10; rowIndex++) { IRow row = sheet.CreateRow(rowIndex); for (int cellIndex = 0; cellIndex < 10; cellIndex++) { ICell cell = row.CreateCell(cellIndex); cell.SetCellValue("Data " + rowIndex + "-" + cellIndex); } } workbook.Write(file); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值