NPOI 能实现对生成的excel内容只读,不可编辑,但可以允许用户在excel里调整列宽和行高吗
解决方案 »
- 存储过程名的疑问?
- 求高手帮忙类化个vb.net语句
- 无论文本框输入的是大写还是小写字符串,显示在文本框里面的字符串都显示为小写?
- C# 网络编程问题
- 菜鸟问题:我做了一个小的控制台应用程序,请问怎样做才能在没安装.netFrameWork的机器上运行呢?
- 如何使Word不启动
- treeview的问题!
- 为什么取不到值?
- 如何知道要下载文件的大小?
- C#程序是否只可以在.net平台下运行?
- 【求助】关于PeekNamedPipe调用防止Process的StandardOutput管道read阻塞获取读写句柄的问题
- “object”不包含“sqlcon”的定义,并且找不到可接受类型为“object”的第一个参数的扩展方法“sqlcon”(是否缺少 using 指令
1.百度“excel 锁定”
我得到的结果是:
https://jingyan.baidu.com/article/597035521917ee8fc00740d0.html2.我们新建一个excel,按上面的操作,是否满足你的需求,实测结果,按照上面的办法在最后一步勾选上“设置单元格格式”,“设置列格式”,“设置行格式”就行3.开启excel录制宏功能去看一下vba代码就知道你大概需要做些什么操作了
主要vba代码为
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
AllowFormattingRows:=True4.接着你在去NOPI的官方api查询,有没有对应的对象,转化成c#代码就是
{
int columnWidth = ffSheet.GetColumnWidth(columnNum) / 256;//获取当前列宽度
for (int rowNum = 1; rowNum <= ffSheet.LastRowNum; rowNum++)//在这一列上循环行
{
IRow currentRow = ffSheet.GetRow(rowNum);
ICell currentCell = currentRow.GetCell(columnNum);
int length = Encoding.UTF8.GetBytes(currentCell.ToString()).Length;//获取当前单元格的内容宽度
if (columnWidth < length + 1)
{
columnWidth = length + 1;
}//若当前单元格内容宽度大于列宽,则调整列宽为当前单元格宽度,后面的+1是我人为的将宽度增加一个字符
}
ffSheet.SetColumnWidth(columnNum, columnWidth * 256);
}
{
IRow currentRow = ffSheet.GetRow(rowNum);
ICell currentCell = currentRow.GetCell(27);
int length = Encoding.UTF8.GetBytes(currentCell.ToString()).Length;
currentRow.HeightInPoints = 20 * (length / 60 + 1);
}
using Spire.Xls;namespace Locksheet_XLS
{
class Program
{
static void Main(string[] args)
{
Workbook workbook = new Workbook();
workbook.LoadFromFile("test.xlsx"); workbook.Worksheets[0].Range.Style.Locked = true;
workbook.Worksheets[0].Protect("123", SheetProtectionType.All); workbook.SaveToFile("result.xlsx", ExcelVersion.Version2010);
System.Diagnostics.Process.Start("result.xlsx");
}
}
}也可以看下原文:https://www.e-iceblue.com/Tutorials/Spire.XLS/Spire.XLS-Program-Guide/Excel-Lock-Easily-Lock-Excel-Worksheet-in-C-VB.NET.html