首页 > 编程语言 >基于C#的excel笔记

基于C#的excel笔记

时间:2023-04-30 16:56:06浏览次数:29  
标签:文件 string C# EPPlus excel Excel 笔记 许可证 new

一、引用的excel库

1、Microsoft.Office.Interop.Excel库

效果不好,代码繁琐。

在执行语句时出现不能解决的BUG,

using Excel = Microsoft.Office.Interop.Excel;
...
Excel.Workbook workbook = excelApp.Workbooks.Add();//X
 // 要生成的字符串
        //    //string inputString = "SID,CName,Grade,end";
        //    //string iS = inputString;

        //    // 创建Excel应用程序对象
        //    Excel.Application excelApp = new Excel.Application();
        //    System.Threading.Thread.Sleep(2000); // 等待 2 秒钟
        //    excelApp.Visible = true;
            
        //    // 创建新的工作簿
        //    Excel.Workbook workbook = excelApp.Workbooks.Add();

        //    // 获取第一个工作表
        //    Excel.Worksheet worksheet = workbook.Worksheets[0];

        //    // 分割字符串,得到二维数组
        //    //string[] rows = inputString.Split(';');
        //    string[][] table = new string[inputString.Length][];
        //    for (int i = 0; i < inputString.Length; i++)
        //    {
        //        table[i] = inputString[i].Split(',');
        //    }

        //    // 将数据写入Excel表格
        //    for (int i = 0; i < table.Length; i++)
        //    {
        //        for (int j = 0; j < table[i].Length; j++)
        //        {
        //            worksheet.Cells[i + 1, j + 1] = table[i][j];
        //        }
        //    }

        //    string outputDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ExcelGenerator");
        //    Directory.CreateDirectory(outputDirectory);

        //    string outputFile = Path.Combine(outputDirectory, "SC.xlsx");
        //    workbook.SaveAs(outputFile);
        //    // 保存Excel文件
        //   // workbook.SaveAs("output.xlsx");

        //    // 关闭Excel应用程序
        //    excelApp.Quit();

在调用 excelApp.Visible = true; 时发生了类型“System.InvalidCastException”的异常,可能是由于 Excel 应用程序正在以“单例”模式运行,而当前程序无法获取此实例的引用,从而无法控制窗口的可见性。这种情况下,你可以手动打开 Excel 应用程序并查看正在打开的工作簿,或者尝试关闭已打开的工作簿以释放 Excel 实例的单例锁定,然后重新启动程序。

2、OpenXMLSDK库

过程复杂

//使用 OpenXMLSDK 生成 Excel 文件的示例代码,让 Excel 文件自立:

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;

// 创建一个名为 "Test.xlsx" 的 Excel 文件
string filePath = @"C:\Excel\Test.xlsx";
SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook);


// 添加工作簿和工作表
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();


WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
SheetData sheetData = new SheetData();
worksheetPart.Worksheet = new Worksheet(sheetData);


WorkbookStylesPart stylesPart = workbookpart.AddNewPart<WorkbookStylesPart>();
stylesPart.Stylesheet = GenerateStylesheet();
stylesPart.Stylesheet.Save();


Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.AppendChild<Sheets>(new Sheets());


Sheet sheet = new Sheet() { Id = spreadsheetDocument.WorkbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = "Sheet1" };
sheets.Append(sheet);


// 写入数据
Row row1 = new Row();
row1.Append(new Cell() { CellValue = new CellValue("第一列第一行"), DataType = CellValues.String });
row1.Append(new Cell() { CellValue = new CellValue("第二列第一行"), DataType = CellValues.String });
sheetData.Append(row1);


Row row2 = new Row();
row2.Append(new Cell() { CellValue = new CellValue("第一列第二行"), DataType = CellValues.String });
row2.Append(new Cell() { CellValue = new CellValue("第二列第二行"), DataType = CellValues.String });
sheetData.Append(row2);


// 保存文件
workbookpart.Workbook.Save();
spreadsheetDocument.Close();


以上代码使用 OpenXMLSDK 库创建了一个名为 "Test.xlsx" 的 Excel 文件,并在第一个工作表上写入了数据。生成文件后,文件可以自立运行,无需依赖 Excel 应用程序。您可以根据自己的需求添加更多的工作表、行和单元格,并使用 OpenXMLSDK 库提供的 API 定制 Excel 文件的样式、格式、内容等。

3、EPPlus 库

非商业时使用,简便。

EPPlus 提供了一个开源版本,完全免费供非商业用途使用。如果您的项目是非商业用途,可以通过以下步骤使用 EPPlus 开源版本:

安装 NuGet 包:在您的项目中添加 NuGet 包 EPPlus,方法是在 Visual Studio 中右击项目文件夹,选择“管理 NuGet 包”,在“浏览”选项卡中搜索“EPPlus”,单击“安装”按钮进行安装。

using OfficeOpenXml;
using OfficeOpenXml.Style;

// 创建一个名为 "Test.xlsx" 的 Excel 文件
string filePath = @"C:\Excel\Test.xlsx";
FileInfo file = new FileInfo(filePath);
ExcelPackage excelPackage = new ExcelPackage(file);

// 获取工作簿和工作表
ExcelWorkbook workbook = excelPackage.Workbook;
ExcelWorksheet worksheet = workbook.Worksheets.Add("Sheet1");


// 写入数据
worksheet.Cells[1, 1].Value = "第一列第一行";
worksheet.Cells[1, 2].Value = "第二列第一行";
worksheet.Cells[2, 1].Value = "第一列第二行";
worksheet.Cells[2, 2].Value = "第二列第二行";


// 保存文件
excelPackage.Save();

出现BUG:

OfficeOpenXml.LicenseException

可能是因为您在商业项目中使用了 EPPlus 开源版本。此时,您需要购买 EPPlus 的商业许可证,否则就不能在商业项目中使用 EPPlus。

如果您已经购买了 EPPlus 的商业许可证,您需要将许可证文件添加到项目中。请按照以下步骤进行操作:

  1. 下载许可证文件:请在 EPPlus 官网上下载您的许可证文件,该文件通常为 EPPlus.x.lic,其中 x 是许可证版本号。
  2. 将许可证文件添加到项目中:请将许可证文件添加到您的项目中,方法是右键单击项目文件夹,选择“添加”->“现有项”,并选择您下载的 EPPlus.x.lic 文件。
  3. 在应用程序启动时启用许可证:在应用程序启动时,调用 EPPlus 的许可证授权方法以启用许可证。以下是一个示例代码:
// 初始化许可证(此处假设许可证文件名为 EPPlus.x.lic,且该文件与应用程序在同一目录下)
ExcelPackage.LicenseContext = LicenseContextEnum.WorldWide;
ExcelPackage.LicensePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EPPlus.x.lic");

请确保许可证文件名、路径和许可证初始化代码与实际情况相符。

遵守 EPPlus 许可证条款和条件是使用 EPPlus 的必要条件之一。希望您能够认真遵守许可证条款和条件。

3.1 TEST

这里写一个简单的非商用的免费测试。

 public static void ExcelGenerator1(string[] inputString)
        {

        string path = "...\\T_Staff.xls"; 
        FileInfo file = new FileInfo(path);
        ExcelPackage.LicenseContext = LicenseContext.NonCommercial;//非商业使用使用许可
        ExcelPackage excelPackage = new ExcelPackage(file);
// 获取工作簿
        ExcelWorkbook workbook = excelPackage.Workbook;
        // 添加工作表
        ExcelWorksheet worksheet = workbook.Worksheets.Add("T_Staff");

        for(int i = 1;i <= inputString.Length; i++)
        {
            worksheet.Cells[1, i].Value = inputString[i - 1];
        }
        excelPackage.Save();

        // 关闭 Excel 进程
        excelPackage.Dispose();

    }

标签:文件,string,C#,EPPlus,excel,Excel,笔记,许可证,new
From: https://www.cnblogs.com/yu-beng/p/17365422.html

相关文章

  • Docker
    #1、yum包更新到最新yumupdate#2、安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#3、设置yum源yum-config-manager--add-repohttps://download.docker.com/linux......
  • linux安装docker-compose
    手动安装docker-compose1)下载地址https://github.com/docker/compose/2)第一种方法将下载的文件放入bin目录下mvdocker-compose-linux-x86_64docker-composecpdocker-compose/usr/bin/chmod+x/usr/bin/docker-composedocker-compose--version3)第三种方法创造软......
  • OpenCV加载深度学习模型
    目录1.单张图像(1)构建网络模型(2)图像预处理(3)预测结果2.多张图像本文使用OpenCV加载深度学习模型,实现了对传入的单张图像或多张图像进行预测。步骤:首先读入Caffe框架训练好的模型,然后对输入图像进行预处理操作,并将其传入已构建的网络模型,最后对得到的预测结果进行排序,找......
  • 坑系列 (Angular 2+ ) -> 控制反转C(Inversion of Control)和 依赖注入DI(Dependency
        控制反转IOC和依赖注入DI这两个概念其实有太多优秀的文章,由浅入深,从不同的角度,再到不同的比喻进行了讲解,对于新手的我来说,看完之后,好像看了又没完全看,回头摸索实践,还是总有种似懂非懂,懂了又没完全懂(‘X了又没完全XXX’句式是2021年某个梗嘻嘻......
  • macbook air 安装 MacOS 及 win10
    前期准备mac电脑、16G的U盘、可以访问的AppStore帐号。重要提示U盘和硬盘数据格式化后不可恢复,需提前做好数据备份。安装macos需要连网。创建可引导的macOS安装器1、U盘y要求至少有14GB可用储存空间,格式化为MacOS扩展格式。2、下载macos系统镜像3、使用“终端”......
  • vue3 vueRouter4 :No match found for location with path ***
    0.采用vue+router4做路由导航.首次载入控制台很干净.F5刷新后,控制台爆出警告,但点击路由正常工作.1.经过排查发现,是menu中使用了<router-link>这玩意,后来改造成  @click="router.push(ele.path)"即可消除警告 2.网络上各种方式我均尝试过,都是无效方案,比如:......
  • CentOs7:如何安装jdk、mysql、redis、gti、maven?
       一、JDK使用压缩包安装,jdk-8u361-linux-x64.tar.gz。//1、解压tar-zvxf....tar.gz//2、配置环境变量vim/etc/profile//新增内容JAVA_HOME=/soft/jdk1.8.0_361PATH=$JAVA_HOME/bin:$PATH//3、重新加载文件profilesource/etc/profile//4、测试ja......
  • CF51F Caterpillar题解
    题目传送门题意:定义毛毛虫为一种特殊的树,形如一条链上挂着若干个叶子。特殊地,在本题中的毛毛虫允许自环但不允许重边。给定一个无向图,每次操作可以合并两个点以及两个点的出边(两个点有相同出边则出现重边,两个点之间有边则出现自环)。求将其变为毛毛虫的最小操作次数。容易发现,......
  • 11-react使用props.children 处理父子组件之间的传值
    //props.children组件传值import{Component}from"react"importreactDomfrom"react-dom"//床架一个createRef函数用来创建ref对象constHello=(props)=>{console.log(props)props.children('子组件传给父组件的值')//就是子组件标签之间的内容/......
  • Docker的一些常用命令
    Docker是一种容器化技术,需要使用许多命令来管理和操作容器。下面是对一些常用的Docker命令和它们的含义的解释:-v:用来将文件或者目录挂载到Docker容器中,使其可以在Docker容器内部进行访问。格式为-v/host/path:/container/path,其中/host/path是本地主机的文件路径,/conta......