Tag: closedxml

从MemoryStream运行Microsoft Excel应用程序

有人知道,是否可以从未保存的文件打开Microsoft Excel? 从内存stream例如? var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add("Sample Sheet"); worksheet.Cell("A1").Value = "Hello World!"; using (var ms = new MemoryStream()) { //IS IT POSSIBLE TO OPEN EXCEL BUT FROM UNSAVED MEMORYSTREAM? //Process.Start(EXCEL MS HERE); } 或者,将文件保存到某个临时文件夹,然后通过Excel将其打开,但是用户需要“保存”和“另存为”操作。 主要目标:使用准备好的工作表从C#代码打开Microsoft Excel应用程序,并说用户必须保存它,就像这个文档是一个新的。

是否有可能使用ClosedXML在Excel中执行查找?

是否有可能在ClosedXML中查找? 我浏览了他们的文档,没有logging。 我还可以看看ClosedXML中包含的所有方法,所以我可以自己find一些这些东西?

ClosedXML大小写敏感的列标题

举例来说,我有这样的代码: DataTable table = new DataTable("Name"); table.Columns.Add("CASESENSITIVE", typeof(string)); table.Columns.Add("casesensitive", typeof(string)); table.Rows.Add("Indocin", "David"); table.Rows.Add("Enebrel", "Sam"); var wb = new XLWorkbook(); wb.Worksheets.Add(table); wb.SaveAs("Excel.xlsx"); 当我打开刚才创build的文件,我看到警报:“Excel在Excel.xlsx中发现不可读的内容….” 如果我确认这个警告excel automaticaly为“casesensitive”列添加“2”。 如何解决这个问题?

使用ClosedXML创build下拉列表

我已经在我的项目中实现了Excel模板下载。 我使用了ClosedXML 。 我有两个Excel表 工作表1:在这张表中,我有一个名为“ types ”的列,我可以在其中创build下拉列表,它是第三列。 表2:在这张表中,我有一个名为“ Types ”的列,其范围地址是: “B2:B4” ,它是第二列。 types值是: 雇员 学生 老师 现在,我想创build一个下拉列表。 我在ClosedXML中创build了一个下拉列表,代码是: //Getting the range of sheet 2 var range = workbook.Worksheet(2).Range(workbook.Worksheet(2).Cell(2,2).Address,workbook.Worksheet(2).Cell(4,2).Address); //Applying sheet 2's range with sheet 1 workbook.Worksheet(1).Column(3).SetDataValidation().List(range:range); wb.Worksheet(1).Column(3).SetDataValidation().IgnoreBlanks = true; wb.Worksheet(1).Column(3).SetDataValidation().InCellDropdown = true; 我在单元格的右边拿到了下拉符号,但是我没有得到它的值。

我可以设置图像*不*自动resize?

我有一个“模板”Excel文件,为布局(一些合并的单元格,一些列宽等)设置了一些基本的东西,然后由ClosedXML用于填充数据。 在基本层面上,它就像下面这样简单: var workbook = new XLWorkbook(filePath); workbook.Worksheets.Single().Cell(1, 4).Value = someTextValue; workbook.Worksheets.Single().Cell(1, 4).Style.Alignment.WrapText = true; // set other values, etc. 整个过程涉及将文件复制到另一个stream,从Web应用程序返回它下载,这种事情。 静态模板文件中的一个单元格具有一个图像。 该行上的另一个单元格需要自动展开以适应使用回车符打包文本。 当设置上面的WrapText属性时,行的自动扩展工作正常。 但是, 形象也在扩大其高度。 (因此变得严重扭曲。) 在文件本身中,我右键单击图像以设置其格式,在“大小和属性”下,我明确select了“不要移动或使用单元格大小”。 但是,通过ClosedXML交互进行行自动resize仍然导致图像resize。 我试过的另一件事是以某种方式将图像从行中“分离”出来,放在文本框中。 然而,它会出现,图像和文本框同样“浮动”上方的单元格和图像不能放置在文本框内(或者我不知道如何)。 看来,ClosedXML没有太多的支持图像(除非我只是没有看到它)。 有没有什么办法在这个设置,以防止这个图像自动调整行的大小?

ClosedXML.Excel中的自动调整列

我明白,这个问题愚蠢的,从常见问题,但我不能在自动宽度的Excel列(使用ClosedXML.Excel库) 我的代码: var wb = new XLWorkbook(); var wsDep = wb.Worksheets.Add("MyWorksheet"); wsDep.Columns("A").AdjustToContents(); wsDep.Columns("B1").AdjustToContents(); wsDep.Columns().AdjustToContents(); 但没有任何变化。 我如何设置自动宽度列与ClosedXML.Excel库?

如何使用C#和ClosedXML将新行添加到Excel文件?

我应该追加一个新的行到现有的Excel文件。 该任务由两部分组成: 添加到不存在的文件(效果很好)。 添加到现有的文件(不工作:它不会产生NEWlogging,只显示从“其他”身体的旧logging)。 这是我的代码: private static void ExportToEXCEL(DataTable dt, string paymentStoryPath) { if (File.Exists(paymentStoryPath)) { XLWorkbook currentWorkbook = new XLWorkbook(paymentStoryPath); IXLWorksheet currentWsh = currentWorkbook.Worksheet("Payment history"); //IXLCell cellForNewData = index.Cell(index.LastRowUsed().RowNumber() + 1, 1); IXLRow rowForNewData = currentWsh.Row(currentWsh.LastRowUsed().RowNumber()+1); rowForNewData.InsertRowsBelow(1); rowForNewData.Value = dt; currentWorkbook.Save(); } else { //not exist XLWorkbook wb = new XLWorkbook(); wb.Worksheets.Add(dt, "Payment history"); […]

ClosedXML查找最后一行的编号

我在C#中使用ClosedXML来修改Excel工作簿。 我需要find最后一个行号,但.RowCount()计算工作表中有多less行。 所以当只有几千条的时候它会返回100万行。 我试过LastRowUsed()但不返回一个int,并没有.row方法。 我怎样才能得到一个int的最后一行?

ClosedXML使用VLOOKUP公式读取行

即时通讯正在处理一个项目,从Excel中使用closedXML读取数据,但即时通讯与我的代码有错误,因为Excel单元格中有查找公式。 有没有一种方法来使用vlookup公式读取行值的closedxml? 谢谢! 这是我得到“语法错误”错误: if (rowValue.Cell(colnum).HasFormula) { ((IDictionary<String, Object>)item)[field] = rowValue.Cell(colnum).Value.ToString(); }

如何从Excel单元格中获取完整值,而不是显示(舍入)值?

我有一个问题从工作表中的单元格中检索确切的值。 如果我打开文件的单元格有一个十进制数字,它只显示4位小数,但如果我点击特定单元格,值是不同的,有6位小数。 我知道这是一个应用于单元格的设置,以显示只有4位小数。 现在我试图在C#中检索单元格的数据,使用ClosedXML.Excel而不是Microsoft.Office.Interop.Excel,但唯一能够得到的是4位小数值,而不是“整数”一个,这是一个很大的问题,因为我后来计算,由于缺less2位小数,我有很大的差异。 我曾尝试使用inputSheet.Worksheet.Cell(row,col).GetDouble()或Convert.ToDouble(inputSheet.Worksheet.Cell(row, col).Value) ,甚至引用“RichText”属性,或者… ToString(“0.000000”),但无论我使用什么,我只能检索4个十进制值,而不是完整的6位小数。