调用C#的SpreadsheetLight.dll程序集实现对xlsx文件的操作

By admin at 2021-11-05 • 0人收藏 • 1122人看过

SpreadsheetLight is an open source Open XML spreadsheet library for .NET Framework written in C#, and is released under the MIT License.

image.png

这里简单提供下使用示例

import dotNet;

var appDomain = dotNet.clr().createAppDomain();
var ssl = appDomain.loadFile("\SpreadsheetLight.dll");

var sl = ssl.new("SpreadsheetLight.SLDocument");
// set a boolean at "A1"
sl.SetCellValue("A1", true);

// set at row 2, columns 1 through 20, a value that's equal to the column index
for ( i = 1; 20; 1) sl.SetCellValue(2, i, i);

// set the value of PI
sl.SetCellValue("B3", 3.14159);
sl.SetCellValueNumeric(4, 2, "3.14159");

// normal string data
sl.SetCellValue("C6", "This is at C6!");

// typical XML-invalid characters are taken care of,
// in particular the & and < and >
sl.SetCellValue("I6", "Dinner & Dance costs < $10");
// this sets a cell formula
// Note that if you want to set a string that starts with the equal sign,
// but is not a formula, prepend a single quote.
// For example, "'==" will display 2 equal signs
sl.SetCellValue(7, 3, "=SUM(A2:T2)");
sl.SaveAs(io.fullpath("\HelloWorld.xlsx"));

这个程序集也依赖其他dll, 我把示例打包了, 有这方面需求的可以下载自行研究:

SpreadsheetLight.zip


开源项目地址:https://spreadsheetlight.com

17 个回复 | 最后更新于 2022-02-24
2021-11-05   #1

我在NuGet找不到system.drawing.common 4.0.0.1  你这个DLL哪里下载的?

2021-11-05   #2

回复#1 @朝西 :

在vs包管理里面安装这个包的时候,会自动下载需要的依赖库, 安装完成后,vs的包目录文件夹里就有了

2021-11-05   #3

大佬

spreadsheetlight.com的dll不行,用大佬的dll就行,厉害啊!

2021-11-06   #4

image.png

我下载VS 建立工程:  Microsoft Visual Studio Community 2019

控制台应用 .net framework  / 4.6.1

有这么多依赖.




2021-11-06   #5

回复#4 @朝西 :

系统自带的那些又不需要你带它 , 同时期待你能分享些实际使用这个dll的代码, 帮助一些其他迷茫的人.

image.png

2021-11-06   #6

回复#4 @朝西 :

。。。不会vs。。。飘过

2021-11-06   #7

OK, 同时感谢分享;

2021-11-09   #8

很好,又多了一个操作excel的途径,多谢大佬。

import console; 
import dotNet

// 导入dll
var ssl = dotNet.load("/SpreadsheetLight.dll");

// 新建excel
var s1 = ssl.new("SLDocument");
// 设置单元格
s1.SetCellValue("A1", 1)
// 保存文件
s1.SaveAs(io.fullpath("/a.xlsx"))

// 打开已存在的excel
var SLDocument = ssl.import("SLDocument")
var s2 = SLDocument("a.xlsx")
//设置单元格
s2.SetCellValue("A2", "111");
// 保存文件
s2.SaveAs(io.fullpath("/a.xlsx"));

console.pause(true);


2021-11-09   #9

回复#5 @admin :

最好能直接做成像com.excel那样的扩展库,这样调用起来就方便了,尤其对于没有安装excel的客户端来说。

2021-11-09   #10

回复#9 @jerryxjr1220 :

可以,得加钱

2021-11-10   #11

增加一个读取所有数据的例子:

import console; 
import dotNet

// 导入dll
var ssl = dotNet.load("/SpreadsheetLight.dll");

// 打开已存在的excel
var SLDocument = ssl.import("SLDocument")
var s2 = SLDocument("a.xlsx")
// 读取所有数据
var stats = s2.GetWorksheetStatistics();
for(i=1;stats.EndRowIndex;1){
	for(j=1;stats.EndColumnIndex;1){
		var value = s2.GetCellValueAsString(i, j);
		if(value != ""){
			console.log(value)
		}
	}
}


2021-11-10   #12

回复#11 @rebellioin51 :

谢谢分享

2022-02-12   #13

用Python调用C#的dll,需要用到pythonnet库,改写了一下,完美运行

把Spreadsheetlight.dll放到同一文件夹。

import clr
clr.AddReference('Spreadsheetlight') # import dll, no need to add ".dll"
from SpreadsheetLight import SLDocument # import class
sl = SLDocument() # create object from class

# set a boolean at "A1"
sl.SetCellValue("A1", True)

# set at row 2, columns1 through 20, a value that's equal to the column index
for i in range(20):
    sl.SetCellValue(2, i, i)

# set the value of PI
sl.SetCellValue("B3", 3.14159)
sl.SetCellValueNumeric(4, 2, "3.14159")

# normal string data
sl.SetCellValue("C6", "This is at C6!")

# typical XML - invalid characters are taken care of, in particular the & and < and >
sl.SetCellValue("I6", "Dinner & Dance costs < $10")

# this sets a cell formula
# Note that if you want to set a string that starts with the equal sign,
# but is not a formula, prepend a single quote.
# For example, "'==" will display 2 equal signs
sl.SetCellValue(7, 3, "=SUM(A2:T2)")
sl.SaveAs("HelloWorld.xlsx")


2022-02-12   #14

回复#14 @jacen :

pythonnet关键是版本要装对,python的版本太多了,各种第三方库支持的版本又不一样,比如pythonnet只支持到python 3.8,用python 3.9就不行

2022-02-13   #15

设置字体颜色

style = s1.CreateStyle();

style.Font.FontColor=System.Drawing.Color.Blue

s1.SetCellStyle("A1",style)
s1.SetCellValue("A1","我想改变字体颜色")


2022-02-19   #16

感谢大佬们的教程

2022-02-24   #17

好哈学习....

登录后方可回帖

登 录
信息栏
公告:
私人站, 专注分享, 可在分享中适当提问, 但谢绝纯提问, 否则不再提醒一律删帖, 谢谢合作!



本站域名:HtmLayout.Cn
aardio可以快速开发上位机,本站主要记录了学习过程中遇到的问题和解决办法及aardio代码分享

这里主要专注于aardio学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.

Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
空间赞助:才仁机械
Loading...