Tag: closedxml

如何使用closedxml将多个数据表添加到一个工作表?

我有多个数据表与数据,我想要在单张表中添加空格。 我正在使用ClosedXML来开发导出excel实用程序。

ClosedXML – 设置单元格的数据types不起作用

我有类似的问题关于ClosedXML,就像这一个,但有点不同。 SetDataType方法不起作用。 例如,我有值string dps = "3.12.02"这不是一个date或数字,它是有效的文本。 当我这样做: ws.Cell(1, 1).Value = dps; ws.Cell(1, 1).SetDataType(XLCellValues.Text); ws.Cell(1, 1).Value = dps; ws.Cell(1, 1).SetDataType(XLCellValues.Text); 并保存该文件,然后打开它在Excel中,它仍然将其转换为一些像37593我试图把它之前和之后设置值,没有改变。 有人可以帮我吗?

使用OpenXML从表格生成电子表格

目标:生成一个电子表格,其中的工作表命名为每个工作表第一行中列出的表名和列名。 这些实际上将基于从这些表构build的类。 问题:打开电子表格后,它声称发现“无法读取的内容”,并询问是否要恢复。 如果select“是”,则完全恢复电子表格,但用户不应该这样做。 观察:使用SDK我能够看到电子表格的内部工作,我注意到工作表的XML名称是真正的问题。 在最初的下载版本中,他们被命名为Sheet1到Sheet9,但是他们通过Sheet1f进入Sheet1a。 所以基本上用hex数1-f来编号。 在我修复它之后,他们将这些名字改为纯数字。 不知道你是否可以看到图像,看起来像我的工作阻止网站:/ 注:我看了我的代码,我没有看到任何地方我可以专门命名这些内部的XML表,所以我不知道什么代码分享给你,但我张贴代码部分是创build这些表。 构build电子表格的方法: public MemoryStream CreatePartsFromAssembly(MemoryStream spreadsheetStrem, Type typeInAssembly) { using (SpreadsheetDocument document = SpreadsheetDocument.Create(spreadsheetStrem, SpreadsheetDocumentType.Workbook)) { //List<Type> types = null; var types = ExcelTypeHelper.GetTableTypes(typeInAssembly); ExtendedFilePropertiesPart extendedFilePropertiesPart1 = document.AddNewPart<ExtendedFilePropertiesPart>("rId" + (types.Count).ToString()); GenerateExtendedFilePropertiesPart1Content(extendedFilePropertiesPart1, types); WorkbookPart workbookPart1 = document.AddWorkbookPart(); GenerateWorkbookPart1Content(workbookPart1, types); var sharedStringOffsets = new List<int>(); foreach (var type […]

更改使用ClosedXML显示的工作表

我正在使用ClosedXMLdynamic创build一个包含多个工作表的Excel工作簿。 我正在努力改变工作簿中select回工作簿中的第一个工作表后,我已经完成生成内容,并找不到任何文档中有关如何更改所显示的工作表。 我努力了: wb.Worksheet(1).Select(); 这将选中工作表中的所有单元格,但不会将视图更改回来。 wb.Worksheet(1).Cells(1,1).Value = wb.Worksheet(1).Cells(1,1).Value 似乎设定的价值,但再次不改变观点。 我试图隐藏其他工作表,希望它会自动select可见工作表,但似乎没有工作。 有什么build议么?

使用现有的范围名称从电子表格读取或检索值

我有一个现有的Excel文件,它已经定义了单元格名称或单元格区域名称。 我能够使用Openxml sdk获取所有单元格区域名称。 我的示例代码如下: var path = @"D:\test.xlsx"; using (var document = SpreadsheetDocument.Open(path, true)) { var workbookPart = document.WorkbookPart; var wb = workbookPart.Workbook; var definedNames = wb.DefinedNames; if (definedNames != null) { System.Console.WriteLine("Name\tText\tName.Value"); foreach (DefinedName dn in definedNames) { System.Console.WriteLine(dn.Name + "\t" + dn.Text + "\t" + dn.Name.Value); } } } 有没有什么办法来检索或使用这个OpenXml或任何其他SDK在C#中定义的名称读取单元格的值?

如何在Excel中使用ClosedXML将数组插入到单个行中

我有一个数组,我需要把元素放在一行,数组的每个元素应该在不同的单元格。 foreach (var cell in range.Cells()) { int index = 0; cell.Value = arrayCompany[index]; index++; if (index == count) { break; } } 我的数组有10个元素,excel文件生成一行,但在所有10列中,单元格值是数组的最后一个元素。 我希望每个元素都在不同的列中。 A1 = arrayCompany [0],B1 = arrayCompany [1] … 10thcolumn = arrayCompany [9]

在closedxml中计算公式

我在closedxml中使用了一个公式: var result = worksheet.Cell(3, 8); result.FormulaA1 = "=IF(ISNA(VLOOKUP(G3,OrganizationUnitsById,2,FALSE))," + "" + ",VLOOKUP(G3,OrganizationUnitsById,2,FALSE))"; 当我之前使用这个公式,它完美地运作。 但后来我改了一些东西,然后这个公式没有自动计算。 我从应用程序保存文件,这个公式工作,但没有自动计算。 哪里不对?

任何想法,为什么我得到的错误“列号必须在1和16384之间?

我的代码试图完成的是将所有单元格从一个工作表复制到另一个工作表。 这是简单的块 // find the index of the first empty row and column in the dumped file int m = 1; while ( !wb.Worksheet(3).Cell(m,1).IsEmpty() ) ++m; int n = 1; while ( !wb.Worksheet(3).Cell(1,n).IsEmpty() ) ++n; // copy from dumped file into raw data file for (int i = 1; i < m; ++i ) { […]

是否可以使用closedXML从右到左创build一个Excel表格

我正在使用closedXML来生成一个XML文件(阿拉伯语),我需要这个文件是在右到左布局如何在closedXML中做到这一点。 XLWorkbook wb = new XLWorkbook(); var ws = wb.Worksheets.add("Sheet1"); ws.Cell(1,1).Value = "مرحبا"; ws.Style.Alignment.ReadingOrder = XLAlignmentReadingOrderValues.RightToLeft;

使用ClosedXML在Range中查找stringC#

我希望能够find一个特定的string是否存在于使用ClosedXML的范围内,但是,我在文档中找不到任何find命令。 目前,我循环遍历1000行,以查找string是否存在。 有没有更有效的方法来做到这一点? 这是我的代码的一个例子: for (int j = 3; j <= PipeSheet.LastRowUsed().RowNumber(); j ++) { if ((PipeSheet.Cell(j, ProdCodeColumnInPipe).Value.ToString().Trim() == SheetToEdit.Cell(i, ProdCodeColumnInMain).Value.ToString().Trim() & PipeSheet.Cell(j, 3).Value.ToString().Trim() == SheetToEdit.Cell(i, RegionCodeInMain).Value.ToString().Trim())) { SheetToEdit.Cell(i, ColumnToEdit).Value = "+"; if ((new[] { "Open", "Under Review" }).Contains(PipeSheet.Cell(j, 5).Value.ToString().Trim()) & (new[] { "Forecast"}).Contains(PipeSheet.Cell(j, 4).Value.ToString().Trim())) { if (FirstColumnHighlight > 1 & LastColumnHighlight > 1) { […]