zoukankan      html  css  js  c++  java
  • Excel帮助类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Diagnostics;
    using System.Data;
    using System.IO;
    using System.Windows.Forms;
    using Microsoft.Office.Interop.Excel;

    namespace yjs_cl_seq
    {
        class ExcelHelper
        {
            private Microsoft.Office.Interop.Excel.Application oExcel = null;
            private Microsoft.Office.Interop.Excel.Workbook oBook = null;
            private Microsoft.Office.Interop.Excel.Worksheet oSheet = null;
            private Microsoft.Office.Interop.Excel.Range oRange = null;

            public ExcelHelper()
            {
                oExcel = new Microsoft.Office.Interop.Excel.Application();
                oBook = oExcel.Application.Workbooks.Add(true);
                oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oBook.ActiveSheet;
                oSheet.Name = "sheet" + oBook.Sheets.Count + 1;
            }

            public void createExcel(string DocTitle, string path, System.Data.DataTable sampTable, System.Data.DataTable zfTable, string CurrentUserName, string netUser, string netPwd, string netIP)
            {
                path = path + @"" + CurrentUserName;
                try
                {
                    try
                    {
                        //访问的是网络路径
                        if (!string.IsNullOrEmpty(netUser) && !string.IsNullOrEmpty(netPwd) && !string.IsNullOrEmpty(netIP))
                        {
                            if (ConnectHelper.impersonateValidUser(netUser, netIP, netPwd) == false)
                            {
                                MessageBox.Show("网络路径不存在");
                                return;
                            }
                        }
                        if (!Directory.Exists(path))
                        {
                            Directory.CreateDirectory(path);
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("访问路径错误" + ex.ToString());
                        return;
                    }
                    //赋值之前先保存Excel文件
                    //if (path.LastIndexOf("\") != path.Length - 1)
                    //{
                    //    path = path + "\";
                    //}
                    string title = path + @"" + DocTitle + "_" + DateTime.Now.ToString("yyyy-MM-dd hhmmssfff") + ".xls";
                    if (SaveAs(title))
                    {

                        if (sampTable != null && sampTable.Rows.Count > 0)
                        {
                            InsertText("A1", "名称");
                            InsertText("B1", "别名");
                            for (int i = 0; i < sampTable.Rows.Count; i++)
                            {
                                string name = sampTable.Rows[i]["名称"].ToString();
                                string anotherName = sampTable.Rows[i]["别名"].ToString();
                                InsertText("A" + (i + 2), name);
                                InsertText("B" + (i + 2), anotherName);

                            }
                        }

                        if (zfTable != null && zfTable.Rows.Count > 0)
                        {
                            InsertText("C1", "检品编号");
                            for (int i = 0; i < zfTable.Rows.Count; i++)
                            {
                                string jpbh = zfTable.Rows[i]["检品编号"].ToString();
                                InsertText("C" + (i + 2), jpbh);

                            }
                        }
                        //再次保存
                        SaveAs(title);
                        Dispose();
                    }

                }
                catch (Exception)
                {
                    throw;
                }
            }

            /// <summary>
            /// 向excel写入文本(如向“A1”写入文字:InsertText("A1",要填入的文字))
            /// </summary>
            /// <param name="val_range">单元格</param>
            /// <param name="val_text">文本</param>
            public void InsertText(string val_range, string val_text)
            {
                oRange = oSheet.Range[val_range];
                oRange.Value = val_text;
            }
            /// <summary>
            /// 向excel写入文本
            /// </summary>
            /// <param name="val_range">单元格</param>
            /// <param name="val_text">文本</param>
            /// <param name="val_fontSize">字体大小</param>
            public void InsertText(string val_range, string val_text, float val_fontSize)
            {
                oRange = oSheet.Range[val_range];
                oRange.Value = val_text;
                oRange.Font.Size = val_fontSize;
            }
            /// <summary>
            /// 向excel写入文本(如向“B1”写入文字:InsertText(1,2,要填入的文字))
            /// </summary>
            /// <param name="val_i">行号</param>
            /// <param name="val_j">列号</param>
            /// <param name="val_text">文本</param>
            public void InsertText(int val_i, int val_j, string val_text)
            {
                oRange = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[val_i, val_j];
                oRange.Value = val_text;
            }
            /// <summary>
            /// 向excel写入文本(如向“B1”写入文字:InsertText(1,2,要填入的文字,字体大小))
            /// </summary>
            /// <param name="val_i">行号</param>
            /// <param name="val_j">列号</param>
            /// <param name="val_text">文本</param>
            /// <param name="val_fontSize">字体大小</param>
            public void InsertText(int val_i, int val_j, string val_text, float val_fontSize)
            {
                oRange = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[val_i, val_j];
                oRange.Value = val_text;
                oRange.Font.Size = val_fontSize;
            }
            /// <summary>
            /// 读取excel文本项(如读取“B1”的文字:ReadText("B1"))
            /// </summary>
            /// <param name="val_range">单元格</param>
            /// <returns></returns>
            public string ReadText(string val_range)
            {
                oRange = oSheet.Range[val_range];
                return oRange.Text.ToString();
            }
            /// <summary>
            /// 读取excel文本项(如读取“A1”的文字:ReadText(1,1))
            /// </summary>
            /// <param name="val_i">行号</param>
            /// <param name="val_j">列号</param>
            /// <returns></returns>
            public string ReadText(int val_i, int val_j)
            {
                oRange = (Microsoft.Office.Interop.Excel.Range)oSheet.Cells[val_i, val_j];
                return oRange.Text.ToString();
            }
            /// <summary>
            /// 合并单元格
            /// </summary>
            /// <param name="x1">行号</param>
            /// <param name="y1">列号</param>
            /// <param name="x2">行号</param>
            /// <param name="y2">列号</param>
            public void MerMergeCells(int x1, int y1, int x2, int y2)
            {
                oSheet.Range[oSheet.Cells[x1, y1], oSheet.Cells[x2, y2]].Merge();
            }
            /// <summary>
            /// 设置excel列的默认样式
            /// </summary>
            public void SetColumnDefaultStyle()
            {
                oSheet.Columns.EntireColumn.AutoFit();
                oSheet.Columns.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            }
            /// <summary>
            /// 保存excel文件(如要将excel保存到D: est.xls:SaveAs)
            /// </summary>
            /// <param name="val_saveAsFilePath">文件路径</param>
            /// <returns></returns>
            public bool SaveAs(string val_saveAsFilePath)
            {
                try
                {
                    oExcel.DisplayAlerts = false;

                    oBook.SaveAs(val_saveAsFilePath);
                    return true;
                }
                catch (Exception ex)
                {
                    Dispose();
                    MessageBox.Show(ex.ToString());
                    return false;

                }

            }

            public bool Print()
            {
                try
                {
                    oSheet.PrintOut();
                    return true;
                }
                catch
                {
                    return false;
                }
            }

            /// <summary>
            /// 自动释放excel资源
            /// </summary>
            public void Dispose()
            {
                int generation = System.GC.GetGeneration(oExcel);
                if (oExcel != null)
                {
                    oExcel.Workbooks.Close();
                    oExcel.Quit();
                    // KillAllExcel();
                    oExcel = null;
                }
                if (oBook != null)
                {
                    oBook = null;
                }
                if (oSheet != null)
                {
                    oSheet = null;
                }
                if (oRange != null)
                {
                    oRange = null;
                }
                GC.Collect(System.GC.GetGeneration(generation));
            }

            /// <summary>
            /// 杀死所有Excel进程
            /// </summary>
            private static void KillAllExcel()
            {
                List<Process> excelProcesses = GetExcelProcesses();
                for (int i = 0; i < excelProcesses.Count; i++)
                {
                    excelProcesses[i].Kill();
                }
            }

            /// <summary>
            /// 获取所有excel进程
            /// </summary>
            /// <returns></returns>
            private static List<Process> GetExcelProcesses()
            {
                Process[] processes = Process.GetProcesses();
                List<Process> excelProcesses = new List<Process>();
                for (int i = 0; i < processes.Length; i++)
                {
                    if (processes[i].ProcessName.ToUpper() == "EXCEL")
                        excelProcesses.Add(processes[i]);
                }
                return excelProcesses;
            }

        }
    }

  • 相关阅读:
    实例告诉你如何把 if-else 重构成高质量代码!
    Java8 快速实现List转map 、分组、过滤等操作
    大学四年Java学习路线规划,所有私藏资料我都贡献出来了!
    Redis面试题汇总(附答案),面试突击专用
    代码优化大盘点:35 个 Java 代码优化魔鬼细节
    ES6+Webpack+Babel基本环境搭建
    抽象类和接口的异同及实例解析
    .NET ORM 哪家强
    Asp.Net 高性能ORM框架 SqlSugar.ORM 2.8
    ASP.NET 让无码编程不在是梦 -.NET通用平台、通用权限、易扩展、多语言、多平台架构框架
  • 原文地址:https://www.cnblogs.com/wenbing/p/3605166.html
Copyright © 2011-2022 走看看