C# 下载安装,使用OfficeOpenXml

news2024/11/19 7:46:43

下载安装OfficeOpenXml模块

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection.Emit;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows.Forms;
using OfficeOpenXml;
using OfficeOpenXml.Style;

namespace WfrmOfficeOpenXml
{
    public partial class Form1 : Form
    {


        public static string filePath = Regex.Match(System.IO.Directory.GetCurrentDirectory(), @".*(?=:\\)").Value;
        public static string filePathExcel = filePath + ":\\Content\\Excel";

        public Form1()
        {
            InitializeComponent();
            label2.Text = filePathExcel;
        }




        /// <summary>
        /// ExcelPackage 保存为Excel文件
        /// </summary>
        public static void Test1()
        {
            string strFile = filePathExcel + "\\a.xlsx";
            if (!Directory.Exists(filePathExcel))
            {
                Directory.CreateDirectory(filePathExcel);
            }

            ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
            using (FileStream fileStream = new FileStream(strFile, FileMode.Create))
            using (ExcelPackage package = new ExcelPackage(fileStream))
            {
                var sheet = package.Workbook.Worksheets.Add("木屋");//添加一个sheet
                var cells = sheet.Cells;
                cells[1, 1].Value = "大大怪将军的小木屋";//给第一行第一列赋值
                cells["A1:I1"].Style.Font.Bold = true; //指定区域设置字体加粗
                cells["A1:I1"].Style.Font.Size = 18; //指定区域设置字体加粗
                cells["A1:I1"].Merge = true;//将A列1行和I列1行的单元格合并
                                            //列自适应宽度
                sheet.Cells.AutoFitColumns();
                //列文本水平居中显示
                sheet.Cells.Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
                package.Save();//保存
            }
        }



        /// <summary>
        /// DataTable 保存为Excel文件
        /// </summary>
        public static void Test2()
        {
            string strFile = filePathExcel + "\\a2.xlsx";
            if (!Directory.Exists(filePathExcel))
            {
                Directory.CreateDirectory(filePathExcel);
            }

            DataTable dt = new DataTable();//创建表
            dt.Columns.Add("ID", typeof(Int32));//添加列
            dt.Columns.Add("Name", typeof(String));
            dt.Columns.Add("Age", typeof(Int32));
            dt.Rows.Add(new object[] { 1, "张三", 20 });//添加行
            dt.Rows.Add(new object[] { 2, "李四", 25 });
            dt.Rows.Add(new object[] { 3, "王五", 30 });
            ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
            using (FileStream fileStream = new FileStream(strFile, FileMode.Create))
            using (ExcelPackage package = new ExcelPackage(fileStream))
            {
                var sheet = package.Workbook.Worksheets.Add("木屋");//添加一个sheet
                sheet.Cells["A1"].LoadFromDataTable(dt, true);
                package.Save();//保存
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Test1();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Test2();
        }

        /// <summary>
        /// 导出数据库模板
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string strFile = filePathExcel + "\\创健数据库模板.xlsx";
            if (!Directory.Exists(filePathExcel))
            {
                Directory.CreateDirectory(filePathExcel);
            }
            ExcelPackage.LicenseContext = OfficeOpenXml.LicenseContext.NonCommercial;
            using (ExcelPackage package = new ExcelPackage())
            {
                ExcelWorksheet xlSheet = package.Workbook.Worksheets.Add("创建表");


                xlSheet.Cells[1, 1].Value = "表中文名称(中文,示例:部门明细表)";
                xlSheet.Cells[1, 2].Value = "表英文名称(英文,示例:DepartDetails)";
                xlSheet.Cells[1, 1].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[1, 2].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[1, 2, 1, 6].Merge = true;
                xlSheet.Row(2).Style.Font.Name = "Microsoft YaHei";
                xlSheet.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Left;
                xlSheet.Row(2).Style.VerticalAlignment = ExcelVerticalAlignment.Center;


                xlSheet.Cells[2, 1].Value = "字段";
                xlSheet.Cells[2, 2].Value = "说明";
                xlSheet.Cells[2, 3].Value = "类型(nvarchar(100))";
                xlSheet.Cells[2, 4].Value = "是否为空(默认不填写就是为空,1为不为空,2为可以空)";
                xlSheet.Cells[2, 5].Value = "主键(1.为唯一标识主键,2.不为主键,不填默认不是主键)";
                xlSheet.Cells[2, 6].Value = "索引(1.为索引,2.不为索引,不填默认不是索引)";
                xlSheet.Cells[2, 7].Value = "默认值";
                xlSheet.Column(1).Width = 20;//设置列宽
                xlSheet.Column(2).Width = 20;//设置列宽
                xlSheet.Column(3).Width = 30;//设置列宽
                xlSheet.Column(4).Width = 30;//设置列宽
                xlSheet.Column(5).Width = 30;//设置列宽
                xlSheet.Column(6).Width = 30;//设置列宽
                xlSheet.Column(7).Width = 30;//设置列宽
                xlSheet.Row(2).Style.Font.Name = "Microsoft YaHei";
                xlSheet.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                xlSheet.Row(2).Style.VerticalAlignment = ExcelVerticalAlignment.Center;


                xlSheet.Row(1).Height = 40;//自动调整行高
                xlSheet.Row(2).Height = 40;//自动调整行高
                xlSheet.Cells[2, 3].Style.Font.Size = 10;
                xlSheet.Cells[2, 3].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[2, 4].Style.Font.Size = 10;
                xlSheet.Cells[2, 4].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[2, 5].Style.Font.Size = 10;
                xlSheet.Cells[2, 5].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[2, 6].Style.Font.Size = 10;
                xlSheet.Cells[2, 6].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells[2, 7].Style.Font.Size = 10;
                xlSheet.Cells[2, 7].Style.WrapText = true;//自动换行,全局
                xlSheet.Cells.Style.Font.Name = "Microsoft YaHei";//全局

                if (Directory.Exists(filePathExcel))
                {
                    DelectDir(filePathExcel);//导出excel前先清楚文件夹中文件,防止数据量大
                }

                package.SaveAs(new FileInfo(strFile));
                package.Dispose();
                label2.Text = strFile;
            }
        }


        /// <summary>
        /// 删除指定文件夹中文件
        /// </summary>
        /// <param name="srcPath"></param>
        public static void DelectDir(string srcPath)
        {
            try
            {
                DirectoryInfo dir = new DirectoryInfo(srcPath);
                FileSystemInfo[] fileinfo = dir.GetFileSystemInfos();  //返回目录中所有文件和子目录
                foreach (FileSystemInfo i in fileinfo)
                {
                    if (i is DirectoryInfo)            //判断是否文件夹
                    {
                        DirectoryInfo subdir = new DirectoryInfo(i.FullName);
                        subdir.Delete(true);          //删除子目录和文件
                    }
                    else
                    {
                        File.Delete(i.FullName);      //删除指定文件
                    }
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }






    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1675582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能EDM邮件群发工具哪个好?

企业之间的竞争日益激烈&#xff0c;如何高效、精准地触达目标客户&#xff0c;成为每个市场战略家必须面对的挑战。在此背景下&#xff0c;云衔科技凭借其前沿的AI技术和深厚的行业洞察&#xff0c;匠心推出了全方位一站式智能EDM邮件营销服务平台&#xff0c;重新定义了邮件营…

Docker 使用 Fedora 镜像

Fedora 在 Docker 中的使用也非常简单&#xff0c;直接使用命令 docker run -it fedora:latest bash 就可以 pull 到本地的容器中并且运行。 C:\Users\yhu>docker run -it fedora:latest bash Unable to find image fedora:latest locally latest: Pulling from library/fed…

曲线救国:window 安装 docker

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

【HR】阿里三板斧--20240514

参考https://blog.csdn.net/haydenwang8287/article/details/113541512 头部三板斧 战略能不能落地、文化能不能得到传承、人才能不能得到保障。 头部三板斧适用的核心场景有三个&#xff1a;一是战略不靠谱&#xff1b;二是组织效率低、不聚心&#xff1b;三是人才跟不上。对…

JavaScript精粹(一)

JavaScript&#xff08;简称为JS&#xff09;是一种广泛应用于网页开发的脚本语言&#xff0c;具有以下几个主要作用&#xff1a; 网页交互&#xff1a;JavaScript 可以用于创建动态的网页效果&#xff0c;例如响应用户的操作&#xff0c;实现页面内容的动态更新&#xff0c;以…

LearnOpenGL(十七)之混合

一、丢弃片段 有些图片并不需要半透明&#xff0c;只需要根据纹理颜色值&#xff0c;显示一部分&#xff08;alpha值为1.0&#xff09;&#xff0c;或者不显示一部分&#xff08;alpha值为0.0&#xff09;&#xff0c;没有中间情况。我们需要丢弃(Discard)显示纹理中透明部分的…

GPT搜索鸽了!改升级GPT-4

最近OpenAI太反常&#xff0c;消息一会一变&#xff0c;直让人摸不着头脑。 奥特曼最新宣布&#xff1a;5月13日开发布会&#xff0c;不是GPT-5&#xff0c;也不是盛传的GPT搜索引擎&#xff0c;改成对ChatGP和GPT-4的升级&#xff5e; 消息一出&#xff0c;大伙儿都蒙了。 之…

vscode 通过ssh 远程执行ipynb +可以切换conda env

主要是保证几个点 远程服务器python 环境没问题 conda这些也都有的ssh的账户 是有conda权限的没有免密就输入密码 免密教程就是最基本的那种 公钥copy过去就行了vscode 那几个插件都要装好 开始操作 首先 vscode 点击左侧工具栏中的扩展&#xff0c;搜索“ssh”&#xff0c;…

JVM面试题:85道JVM虚拟机面试题及答案

面试题 1 .简述Java堆的结构&#xff1f;什么是堆中的永久代(Perm Gen space)? JVM整体结构及内存模型 试题回答参考思路&#xff1a; 1、堆结构 JVM的堆是运行时数据区&#xff0c;所有类的实例和数组都是在堆上分配内存。它在JVM启动的时候被创建。对象所占的堆内存是由自…

Java入门之数据类型和变量

1.字面常量 字面常量就是在程序运行中&#xff0c;固定不变的量&#xff0c;例如如下的代码 public class Demo{public static void main(String[] args){System.Out.println("hello world!");System.Out.println(100);System.Out.println(3.14);System.Out.println…

Git 的原理与使用(中)

Git 的原理与使用&#xff08;上&#xff09;中介绍了Git初识&#xff0c;Git的安装与初始化以及工作区、暂存区、版本库相关的概念与操作&#xff0c;本文接着上篇的内容&#xff0c;继续深入介绍Git在的分支管理与远程操作方面的应用。 目录 五、分支管理 1.理解分支 2.创…

多臂老虎机

多臂老虎机 有n根拉杆的的老虎机&#xff0c;每根拉杆获得奖励(值为1)的概率各不相同。 期望奖励更新 Q k 1 k ∑ i 1 k r i 1 k ( r k ∑ i 1 k − 1 r i ) 1 k ( r k k Q k − 1 − Q k − 1 ) Q k − 1 1 k [ r k − Q k − 1 ] Q_k\frac 1k \sum^{k}_{i1}r_i\\…

STL----resize

resize的作用 设置容器元素个数和初始值。 resize和reserve resize即改变容器元素个数&#xff0c;也改变容器容量。 reserve只改变容器容量&#xff0c;不改变容器元素个数。 reserve有什么用 reserve---存储&#xff0c;容量&#xff0c;保留。 1&#xff0c;设置容器容…

【vivado】 IBERT GT收发器误码率测试

一、前言 IBERT(Integrated Bit Error Ratio Tester),集成误码率测试仪。作为用户来说可以使用这个工具对自己设计的板子中的高速串行收发器进行简单测试&#xff0c;从而判断设计的接口是否有问题。因为这个工具是直接集成到FPGA上&#xff0c;这样一来直接使用这个工具来测试…

搜索引擎的设计与实现(三)

目录 5 系统详细实现 5.1实现环境配置 5.2功能实现 5.2.1 建立索引 5.2.2 文件搜索实现 5.2.3 数据库的连接配置 5.2.4 数据库搜索实现 5.2.5 后台数据编辑实现 前面内容请移步 搜索引擎的设计与实现&#xff08;二&#xff09; 免费源代码&毕业设计论文 搜索…

vaspkit 画 Charge-Density Difference

(echo 314;echo $(cat 1))|vaspkit 文件1提前写好使用的CHGCAR路径 SPIN_DW.vasp ../ML2scf/SPIN_DW.vasp ../ML1scf/SPIN_DW.vasp POSite and negative 默认为blue,and 青色 (RGB 30 245 245) 正值&#xff1a;blue 。负值&#xff1a;青色 RGB 30 245 245。 提示&…

(四十二)第 6 章 树和二叉树(树的二叉链表(孩子-兄弟)存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

Nodejs笔记2

模块化 模块化初体验 模块暴露数据 导入模块 fs 写绝对路径 require写相对路径不会受到影响 ./../不能省略 js 和json文件后缀可以省略 如果存在 命名相同的js和json文件&#xff0c;优先导入js文件 导入文件夹时的情况 require导入模块的基本流程 commonJS模块…

大数据可视化实验(四):Excel数据可视化

目录 一、实验目的... 1 二、实验环境... 1 三、实验内容... 1 1&#xff09;excel函数应用.. 1 2&#xff09;数据透视图绘制... 3 四、总结与心得体会... 5 一、实验目的 1&#xff09;掌握函数和公式的原理 2&#xff09;掌握在单元格或编辑栏中直接输入带函数的公式…

react18【系列实用教程】react-router-dom —— 路由管理 (2024最新版)

类似 vue-router 安装 npm i react-router-domreact-router 中包含 native 的开发&#xff0c;仅网站开发&#xff0c;使用更轻量的 react-router-dom 即可 路由模式 history 模式需要后端支持&#xff0c;使用 createBrowserRouter 函数实现hash 模式无需后端支持&#xff0c;…