我正在使用名为 Gembox 的外部组件来创建 Excel 报告。
将 C# 中的 DateTime 属性导出到 Excel 时,该值在 Excel 中显示为数字(例如“-693593”)。所有其他(基本)属性类型均显示为所代表的类型。
在 Excel 中,我希望将 DateTime 显示为正确的日期,在 Gembox 选项中,我找不到将格式设置为日期的选项。
另一种选择是在 Excel 中设置值时使用 .ToString() 转换 DateTime,这会给出所需的结果,但有更好的方法吗?
一些简单的代码示例:
ExcelFile excelFile = new ExcelFile();
ExcelWorksheet excelWorksheet = excelFile.Worksheets.Add("MyWorksheet");
int rownumber = 0;
int columnnumber = 2;
DateTime dateTime = DateTime.Now;
excelWorksheet.Cells[rownumber, columnnumber].Value = dateTime;
Run Code Online (Sandbox Code Playgroud)
输出示例:
将其发布在这里以防对其他人有帮助。
我们使用 GemBox 构建 Excel 报告和 PDF,并在 Linux 上运行我们的代码。
我们一直在将项目升级到 .NET 6,但刚刚遇到了此错误。
无法加载共享库“libHarfBuzzSharp”或其依赖项之一...
我查看了 GemBox 的发行说明,发现他们已经采取措施放弃 System.Drawing,因为 Microsoft 已经放弃了 Linux 对此的支持。
我们正在评估Gembox作为Aspose的替代品.我认为我会失明,因为我不能做的一件事就是轻松获取ExcelCell的地址(例如"B4").
例如,在迭代单元格时,我们可能会遇到意外的值,并希望告诉用户错误的位置.
var dodgyCell = sheet.Cells[rowIndex, colIndex];
Run Code Online (Sandbox Code Playgroud)
我找到的最佳解决方法是创建一个单元格的CellRange然后使用startposition.即:
var cr = sheet.Cells.GetSubrangeAbsolute(rowIndex, colIndex, rowIndex, colIndex);
var message = "Dodgy value was found in cell " + cr.StartPosition
Run Code Online (Sandbox Code Playgroud)
当然必须有一个更简单的方法吗?
干杯
根据他们的文档:GemBox.Spreadsheet可以读写公式,但无法计算公式结果.在MS Excel中打开XLS文件时,将自动计算公式结果.
因此,如果我创建一个带有一些注入值的电子表格并将其保存到磁盘,如果我在excel中打开文件,我可以看到计算值.
如果我在gembox中打开该文件并查找计算出的单元格的值,则得到0的结果
flexcel中也存在相同的功能..无法从给定的单元格中检索计算出的值..它返回零..
所以我正在做的是:
值始终为0.我在excel中打开文件..值按预期计算.
我有一个字符串,我正在使用GEMBOX SPREADSHEET
string sr = “Save as type”;
Run Code Online (Sandbox Code Playgroud)
在这 - 保存类型 - 是正常的字符串,但当我加载文本文件时使用GEMBOX
这个符号
“Save as type”
Run Code Online (Sandbox Code Playgroud)
被转换为
?Save as type?
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?当我尝试实现它时,这就是代码
65533
Run Code Online (Sandbox Code Playgroud) 我有个问题。有没有办法可以使用 for 循环遍历电子表格中的所有列/行?现在我在我的代码中使用这样的 foreach 循环:(你可以忽略里面发生的事情)。
foreach (ExcelRow row in w1.Rows)
{
foreach (ExcelCell cell in row.AllocatedCells)
{
Console.Write("row: {0}", globalVar.iRowActual);
if (globalVar.iRowActual > 1)
{
cellValue = SafeCellValue(cell);
Console.WriteLine("value is: {0}", cellValue);
}
}
globalVar.iRowActual++;
}
Run Code Online (Sandbox Code Playgroud)
问题是我想将每个单元格的值分配给一个新变量并将其传递给另一个方法。我想为此使用for循环,我知道我可以使用CalculateMaxUsedColumns作为cols的限制,但是是否有这样的属性,我可以用于行?!
这就是我想做的:
int columnCount = ws.CalculateMaxUsedColumns();
int rowCount = ws.CalculateMaxUsedRows(); ------> PART I NEED HELP WITH
for(int i=0; i <columnCount; i++){
for(int j = 0; j<rowCount; j++){
.....
}
}
Run Code Online (Sandbox Code Playgroud)
任何形式的帮助将不胜感激。谢谢!!!
我一直在寻找 Spire.Xls 的免费替代品,允许我从 .Xlsx 格式转换为 .PDF,到目前为止,Gembox 做得很好。然而,我似乎无法正确缩放,而且据我所知,没有人遇到同样的问题。我试图将缩放比例设置为原始大小的 93%,四周边距为 0。但是,我似乎找不到提到这一点的代码文档。它也不在他们的示例文件中。
有使用该 DLL 经验的人知道我应该在哪里查找吗?