• C# 操作Excel


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    using Microsoft.Office.Interop.Excel;
    
    
    
    namespace CShareExcelInterop
    {
        class Program
        {
    
            private static int lastRow=0;
            private static System.Drawing.Color borderColor = System.Drawing.Color.Black;
            private static System.Drawing.Color categoryInteriorColor = System.Drawing.Color.FromArgb(217, 217, 217);
    
    
            static void Main(string[] args)
            {
                
    
                string fileName = "c:\book1.xlsx";
                
                var application = new Application();
                application.Visible = true;
                var workbook = application.Workbooks.Open(fileName);
                var worksheet = workbook.Worksheets.Add(Type.Missing,Type.Missing,Type.Missing,Type.Missing) as Microsoft.Office.Interop.Excel.Worksheet;
    
                createHeader(application);
                createContentTable(application);
                createBottom(application);
    
                Console.ReadLine();
                application.Quit();
            }
    
            static void createHeader(Application app)
            {
                string logo = "c:\logo.gif";
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                sheet.Shapes.AddPicture(logo, Microsoft.Office.Core.MsoTriState.msoFalse,Microsoft.Office.Core.MsoTriState.msoCTrue, 5, 5, 215, 51);
                sheet.Range["A1:A1"].EntireColumn.ColumnWidth = 40;
                sheet.Range["A1:A1"].EntireRow.RowHeight = 60;
    
                
                //sheet.Range["B1:D1"].MergeCells = true;
                sheet.Range["B1:D1"].Merge(0);
                sheet.Range["B1:D1"].EntireColumn.AutoFit();
                sheet.Range["B1:D1"].Value = "QUOTATION";
                sheet.Range["B1:D1"].Font.Size = 28;
                sheet.Range["B1:D1"].Font.Name = "Arial Black";
                System.Drawing.Color rgbColor = System.Drawing.Color.FromArgb(216, 228, 232); 
                sheet.Range["B1:D1"].Font.Color = System.Drawing.ColorTranslator.ToOle(rgbColor);
                sheet.Range["B1:D1"].EntireColumn.ColumnWidth = float.Parse(sheet.Range["B1:D1"].EntireColumn.ColumnWidth.ToString()) + 5;
    
                sheet.Range["A3"].Value = "SuiteA, 3rd Floor Room 1008, Yan Hong Building, Wan Hu West Street No22.";
    
                sheet.Range["A4"].Value = "Xi Ba He, Chao Yang District, Beijing,100015";
                sheet.Range["A5"].EntireColumn.AutoFit();
                sheet.Range["A5"].Value = "Phone:010-51292800   Fax:ext 603                                                    Mail: abc@abc.com";
    
                sheet.Range["C3"].Value = "DATE:";
                sheet.Range["C3"].Font.Size = 9;
                sheet.Range["C3"].Font.Name = "Arial";
                sheet.Range["C3"].Font.Bold = true;
    
                sheet.Range["D3"].Font.Size = 9;
                sheet.Range["D3"].Font.Name = "Arial";
                sheet.Range["D3"].Font.Bold = true;
                
    
                sheet.Range["C4"].Value = "QUOTATION #";
                sheet.Range["C4"].Font.Size = 9;
                sheet.Range["C4"].Font.Name = "Arial";
                sheet.Range["C4"].Font.Bold = true;
    
                sheet.Range["D4"].Font.Size = 9;
                sheet.Range["D4"].Font.Name = "Arial";
                sheet.Range["D4"].Font.Bold = true;
    
                sheet.Range["A3"].Font.Size = 8;
                sheet.Range["A3"].Font.Name = "Arial";
                sheet.Range["A4"].Font.Size = 8;
                sheet.Range["A4"].Font.Name = "Arial";
                sheet.Range["A5"].Font.Size = 8;
                sheet.Range["A5"].Font.Name = "Arial";
                sheet.Range["A5"].EntireColumn.ColumnWidth = float.Parse(sheet.Range["A5"].EntireColumn.ColumnWidth.ToString());// +5;
    
    
                sheet.Range["A7"].Value = "Bill To:";
                sheet.Range["A8"].Value = "Beijing City International School";
                sheet.Range["A9"].Value = "No.77 Baiziwan Nan Er Road Chaoyang District, Beijin";
                sheet.Range["A10"].Value = "100022";
                sheet.Range["A11"].Value = "Phone:010-87717171";
    
    
                sheet.Range["A7"].Font.Size = 10;
                sheet.Range["A7"].Font.Name = "Arial";
                sheet.Range["A7"].Font.Bold = true;
                sheet.Range["A8"].Font.Size = 8;
                sheet.Range["A8"].Font.Name = "Arial";
                sheet.Range["A9"].Font.Size = 8;
                sheet.Range["A9"].Font.Name = "Arial";
                sheet.Range["A10"].Font.Size = 8;
                sheet.Range["A10"].Font.Name = "Arial";
                sheet.Range["A10"].Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
                sheet.Range["A11"].Font.Size = 8;
                sheet.Range["A11"].Font.Name = "Arial";
    
                lastRow=11;
    
            }
    
            static void createContentHeader(Application app)
            {
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
    
                //create content header
                //sheet.Range["A13", "D13"].Merge(0);
                System.Drawing.Color interiorColor = System.Drawing.Color.FromArgb(216, 228, 232);
                sheet.Range["A13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
                sheet.Range["B13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
                sheet.Range["C13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
                sheet.Range["D13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
    
    
    
                sheet.Range["A13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
                sheet.Range["B13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
                sheet.Range["C13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
                sheet.Range["D13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
    
                sheet.Range["A13"].Value = "DESCRIPTION";
                sheet.Range["A13"].Font.Size = 8;
                sheet.Range["A13"].Font.Name = "Arial";
                sheet.Range["A13"].Font.Bold = true;
                sheet.Range["B13"].Value = "QTY";
                sheet.Range["B13"].Font.Size = 8;
                sheet.Range["B13"].Font.Name = "Arial";
                sheet.Range["B13"].Font.Bold = true;
                sheet.Range["C13"].Value = "UNIT PRICE";
                sheet.Range["C13"].Font.Size = 8;
                sheet.Range["C13"].Font.Name = "Arial";
                sheet.Range["C13"].Font.Bold = true;
                sheet.Range["D13"].Value = "SUBTOTAL";
                sheet.Range["D13"].Font.Size = 8;
                sheet.Range["D13"].Font.Name = "Arial";
                sheet.Range["D13"].Font.Bold = true;
                lastRow = 13;
            }
    
            static void createCategoryHeader(Application app)
            {
                lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                //create category
                var range = sheet.Range["A" + lastRow, "D" + lastRow];
                range.Merge(0);
                range.Interior.Color = System.Drawing.ColorTranslator.ToOle(categoryInteriorColor);
                range.Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
                range.Value = "******Category Name******";
                range.Font.Size = 10;
                range.Font.Name = "Arial";
                range.Font.Bold = true;
            }
    
            static void createProduct(Application app,System.Data.DataRow dr)
            {
                lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                //create product
                //var range = sheet.Range["A" + lastRow , "D" + lastRow ];
                var range = sheet.Range["A" + lastRow];
                range.Value = dr["FItemName"].ToString();
                range.Font.Size = 10;
                range.Font.Name = "Arial";
    
                range = sheet.Range["B" + lastRow];
                range.Value = dr["FAuxqtyFrom"].ToString();
                range.Font.Size = 10;
                range.Font.Name = "Arial";
    
                range = sheet.Range["C" + lastRow];
                range.Value = dr["FAuxTaxPrice"].ToString();
                range.Font.Size = 10;
                range.Font.Name = "Arial";
    
                range = sheet.Range["D" + lastRow];
                range.Value = Convert.ToDecimal(dr["FAuxTaxPrice"]) * Convert.ToDecimal(dr["FAuxqtyFrom"]);
                range.Font.Size = 10;
                range.Font.Name = "Arial";
    
                /*A``
                range = sheet.Range["A" + lastRow , "D" + lastRow ];
                int startRow = range.Row;
                long endRow = long.Parse(range.EntireRow.Rows.CountLarge.ToString());
                int startColumn = range.Column;
                int endColumn = int.Parse(range.EntireColumn.Columns.CountLarge.ToString());
                Console.WriteLine("column:" + startColumn + " entircolumn:" + endColumn);
                Console.WriteLine("row:" + startRow + " endRow:" + endRow);
                 * */
            }
    
            static void createDescription(Application app)
            {
                lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                //create Description
                var range = sheet.Range["A" + lastRow , "D" + lastRow ];
                range.Cells.Merge(true);
                range.Value = "******Description******";
                range.Font.Size = 10;
                range.Font.Name = "Arial";
                range.EntireRow.RowHeight = 60;
            }
    
            static void createSubTotal(Application app)
            {
                lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                //create subtotal
                var range = sheet.Range["A" + lastRow, "C" + lastRow];
                range.Cells.Merge(true);
                range.Interior.Color = categoryInteriorColor;
                range.Borders.Color = borderColor;
                range.Value = "Subtotal";
                range.Font.Bold = true;
                range.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
    
                range = sheet.Range["D" + lastRow];
                range.Borders.Color = borderColor;
                range.Value = "0.00";
            }
    
            static void creTotal(Application app)
            {
                lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
                //create total
                var range = sheet.Range["A" + lastRow, "C" + lastRow];
                range.Cells.Merge(true);
                range.Interior.Color = categoryInteriorColor;
                range.Borders.Color = borderColor;
                range.Value = "TOTAL";
                range.Font.Bold = true;
                range.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
    
                range = sheet.Range["D" + lastRow];
                range.Borders.Color = borderColor;
                range.Value = "0.00";
    
                //lastRow = 18;
            }
    
    
            static void createContentTable(Application app)
            {
                //var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
    
                createContentHeader(app);
    
                createCategoryHeader(app);
    
                System.Data.DataTable dt = DBHelper.GetProList("AQ000005");
                for (int i = 0; i < dt.Rows.Count ; i++)
                {
                    createProduct(app,dt.Rows[i]);
                    //if (i % 3 == 0)
                    //{
                    //    createCategoryHeader(app);
                    //    createProduct(app);
                    //    createDescription(app);
                    //}
                }
                
    
                createSubTotal(app);
    
                creTotal(app);
            }
    
            //static void createContentTable(Application app)
            //{
            //    var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
    
            //    //create content header
            //    //sheet.Range["A13", "D13"].Merge(0);
            //    System.Drawing.Color interiorColor=System.Drawing.Color.FromArgb(216,228,232);
            //    sheet.Range["A13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
            //    sheet.Range["B13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
            //    sheet.Range["C13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
            //    sheet.Range["D13"].Interior.Color = System.Drawing.ColorTranslator.ToOle(interiorColor);
    
    
            //    System.Drawing.Color borderColor = System.Drawing.Color.Black;
            //    sheet.Range["A13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
            //    sheet.Range["B13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
            //    sheet.Range["C13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
            //    sheet.Range["D13"].Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
    
            //    sheet.Range["A13"].Value = "DESCRIPTION";
            //    sheet.Range["A13"].Font.Size = 8;
            //    sheet.Range["A13"].Font.Name = "Arial";
            //    sheet.Range["A13"].Font.Bold = true;
            //    sheet.Range["B13"].Value = "QTY";
            //    sheet.Range["B13"].Font.Size = 8;
            //    sheet.Range["B13"].Font.Name = "Arial";
            //    sheet.Range["B13"].Font.Bold = true;
            //    sheet.Range["C13"].Value = "UNIT PRICE";
            //    sheet.Range["C13"].Font.Size = 8;
            //    sheet.Range["C13"].Font.Name = "Arial";
            //    sheet.Range["C13"].Font.Bold = true;
            //    sheet.Range["D13"].Value = "SUBTOTAL";
            //    sheet.Range["D13"].Font.Size = 8;
            //    sheet.Range["D13"].Font.Name = "Arial";
            //    sheet.Range["D13"].Font.Bold = true;
            //    lastRow = 13;
    
            //    //create category
            //    var range = sheet.Range["A14", "D14"];
            //    System.Drawing.Color categoryInteriorColor = System.Drawing.Color.FromArgb(217,217,217);
            //    range.Merge(0);
            //    range.Interior.Color = System.Drawing.ColorTranslator.ToOle(categoryInteriorColor);
            //    range.Borders.Color = System.Drawing.ColorTranslator.ToOle(borderColor);
            //    range.Value = "******Category Name******";
            //    range.Font.Size = 10;
            //    range.Font.Name = "Arial";
            //    range.Font.Bold = true;
    
            //    //create product
            //    range = sheet.Range["A15", "D15"];
            //    range.Value = "******Product Name******";
            //    range.Font.Size = 10;
            //    range.Font.Name = "Arial";
    
            //    range = sheet.Range["A15", "D15"];
            //    int startRow = range.Row;
            //    long endRow = long.Parse(range.EntireRow.Rows.CountLarge.ToString());
            //    int startColumn = range.Column;
            //    int endColumn = int.Parse(range.EntireColumn.Columns.CountLarge.ToString());
            //    Console.WriteLine("column:" + startColumn + " entircolumn:" + endColumn);
            //    Console.WriteLine("row:" + startRow + " endRow:" + endRow);
    
            //    //create Description
            //    range = sheet.Range["A16", "D16"];
            //    range.Cells.Merge(true);
            //    range.Value = "******Description******";
            //    range.Font.Size = 10;
            //    range.Font.Name = "Arial";
            //    range.EntireRow.RowHeight = 60;
    
            //    //create subtotal
            //    range = sheet.Range["A17", "C17"];
            //    range.Cells.Merge(true);
            //    range.Interior.Color = categoryInteriorColor;
            //    range.Borders.Color = borderColor;
            //    range.Value = "Subtotal";
            //    range.Font.Bold = true;
            //    range.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
                
            //    range = sheet.Range["D17"];
            //    range.Borders.Color = borderColor;
            //    range.Value = "0.00";
    
            //    //create total
            //    range = sheet.Range["A18", "C18"];
            //    range.Cells.Merge(true);
            //    range.Interior.Color = categoryInteriorColor;
            //    range.Borders.Color = borderColor;
            //    range.Value = "TOTAL";
            //    range.Font.Bold = true;
            //    range.Cells.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignRight;
    
            //    range = sheet.Range["D18"];
            //    range.Borders.Color = borderColor;
            //    range.Value = "0.00";
    
            //    lastRow = 18;
            //}
    
            static void createBottom(Application app)
            {
                lastRow++;
                lastRow++; lastRow++; lastRow++;
                var sheet = app.Worksheets[1] as Microsoft.Office.Interop.Excel.Worksheet;
    
                var range = sheet.Range["A" + lastRow];
                range.Cells.Merge(true);
                range.Value = "If you have any questions concerning this quotation, please feel free to contact us.";
    
                lastRow++; lastRow++;
                range = sheet.Range["A" + lastRow,"D" + lastRow];
                int width = Convert.ToInt32(range.EntireColumn.Width);
                Shape textBox = sheet.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, Convert.ToInt32(range.Left), Convert.ToInt32(range.Top), width, 16);
    
    
                textBox.TextFrame.Characters(Type.Missing, Type.Missing).Text = "THANK YOU FOR YOUR BUSINESS!";
                textBox.TextFrame.Characters(Type.Missing, Type.Missing).Font.Bold = true;
                textBox.TextFrame.Characters(Type.Missing, Type.Missing).Font.Size = 10;
                textBox.TextFrame.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter; //Microsoft.Office.Core.MsoTextEffectAlignment.msoTextEffectAlignmentCentered;
                textBox.Line.Visible = Microsoft.Office.Core.MsoTriState.msoFalse;
    
            }
    
            static void demo()
            {
                string fileName = "c:\a.xlsx";
                var application = new Application();
                application.Visible = true;
                var workbook = application.Workbooks.Open(fileName);
                var worksheet = workbook.Worksheets[2] as Microsoft.Office.Interop.Excel.Worksheet;
                //var worksheet = workbook.Worksheets.Add(Type.Missing,Type.Missing,Type.Missing,Type.Missing) as Microsoft.Office.Interop.Excel.Worksheet;
    
                worksheet.Cells[1, 1] = "Hello World!";
                //Console.Read();
    
                worksheet.Range["A1"].Value = "Hello Range";
    
                worksheet.Range["A1:c3"].MergeCells = true;
    
                Range range = worksheet.Range["A1:A3"];
                range.Name = "range1";
                worksheet.Names.Add("range1", range);
    
                //worksheet.Range["range1"].Value;
                //worksheet.Range["t1!range1"].Value
    
                //enum range
                foreach (Microsoft.Office.Interop.Excel.Name name in worksheet.Names)
                {
                    Console.WriteLine(name.RefersToRange.Cells.get_Address(true, true, Microsoft.Office.Interop.Excel.XlReferenceStyle.xlA1, Type.Missing));
                    Console.WriteLine(name.RefersToRange.Cells.Worksheet.Name);
                    Console.WriteLine(name.Name);
                }
    
                //search
                //set the cell color to red,which cell has the mached value
                Range currentFind = null;
                Range firstFind = null;
                Range Fruits = worksheet.get_Range("A1", "J50");
                currentFind = Fruits.Find("9300", Type.Missing,
                    XlFindLookIn.xlValues, XlLookAt.xlPart,
                    XlSearchOrder.xlByRows, XlSearchDirection.xlNext, false,
                    Type.Missing, Type.Missing);
                while (currentFind != null)
                {
                    // Keep track of the first range you find.  
                    if (firstFind == null)
                    {
                        firstFind = currentFind;
                    }
    
                    // If you didn't move to a new range, you are done. 
                    else if (currentFind.get_Address(XlReferenceStyle.xlA1)
                          == firstFind.get_Address(XlReferenceStyle.xlA1))
                    {
                        break;
                    }
    
                    currentFind.Font.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Red);
                    currentFind.Font.Bold = true;
    
                    currentFind = Fruits.FindNext(currentFind);
                }
                //end search
    
                Console.ReadLine();
                application.Quit();
            }
        }
    }
  • 相关阅读:
    求解整数集合的交集(腾讯笔试)
    关于屏幕适配之比例布局
    (转)注册JNI函数的两种方式
    正则表达式记录
    当年一个简单可用的多线程断点续传类
    最近用到的几个工具方法
    Android中包含List成员变量的Parcel以及Parcel嵌套写法示例
    java实现计算MD5
    一个用于去除状态栏和虚拟导航栏的BaseActivity
    MVP的模板
  • 原文地址:https://www.cnblogs.com/zyip/p/3355517.html
Copyright © 2020-2023  润新知