- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以使用 OpenXML 将图像添加到 Excel 电子表格中。
但是对于程序的其余部分,我使用 ClosedXML 添加数据。
我可以使用列和行索引在特定单元格添加数据。
如果我可以将图像添加到 excel(它目前似乎是一个单独的图层,悬停在单元格上),如何使用 ClosedXML 将其添加到单元格?
//Adds an image to the excel file
public void AddImageToExcel(SpreadsheetDocument sd, MemoryStream imagestream)
{
DrawingsPart dp = sd.WorkbookPart.WorksheetParts.First().AddNewPart<DrawingsPart>();
ImagePart imgp = dp.AddImagePart(ImagePartType.Jpeg, sd.WorkbookPart.WorksheetParts.First().GetIdOfPart(dp));
MemoryStream bmstream = new MemoryStream(imagestream.ToArray());
bmstream.Seek(0, SeekOrigin.Begin);
MemoryStream fs;
using (fs = imagestream)
{
fs.Position = 0;
imgp.FeedData(fs);
}
DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties nvdp = new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualDrawingProperties();
nvdp.Id = 1025;
nvdp.Name = "Chart Image";
nvdp.Description = "Image";
DocumentFormat.OpenXml.Drawing.PictureLocks piclocks = new DocumentFormat.OpenXml.Drawing.PictureLocks();
piclocks.NoChangeAspect = true;
piclocks.NoChangeArrowheads = true;
DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualPictureDrawingProperties nvpdp = new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualPictureDrawingProperties();
nvpdp.PictureLocks = piclocks;
DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualPictureProperties nvpp = new DocumentFormat.OpenXml.Drawing.Spreadsheet.NonVisualPictureProperties();
nvpp.NonVisualDrawingProperties = nvdp;
nvpp.NonVisualPictureDrawingProperties = nvpdp;
DocumentFormat.OpenXml.Drawing.Stretch stretch = new DocumentFormat.OpenXml.Drawing.Stretch();
stretch.FillRectangle = new DocumentFormat.OpenXml.Drawing.FillRectangle();
DocumentFormat.OpenXml.Drawing.Spreadsheet.BlipFill blipfill = new DocumentFormat.OpenXml.Drawing.Spreadsheet.BlipFill();
DocumentFormat.OpenXml.Drawing.Blip blip = new DocumentFormat.OpenXml.Drawing.Blip();
blip.Embed = dp.GetIdOfPart(imgp);
blip.CompressionState = DocumentFormat.OpenXml.Drawing.BlipCompressionValues.Print;
blipfill.Blip = blip;
blipfill.SourceRectangle = new DocumentFormat.OpenXml.Drawing.SourceRectangle();
blipfill.Append(stretch);
DocumentFormat.OpenXml.Drawing.Transform2D t2d = new DocumentFormat.OpenXml.Drawing.Transform2D();
DocumentFormat.OpenXml.Drawing.Offset offset = new DocumentFormat.OpenXml.Drawing.Offset();
offset.X = 0;
offset.Y = 0;
t2d.Offset = offset;
Bitmap bm = new Bitmap(bmstream);
DocumentFormat.OpenXml.Drawing.Extents extents = new DocumentFormat.OpenXml.Drawing.Extents();
extents.Cx = ((long)bm.Width * (long)((float)914400 / bm.HorizontalResolution));
extents.Cy = ((long)bm.Height * (long)((float)914400 / bm.VerticalResolution));
bm.Dispose();
t2d.Extents = extents;
DocumentFormat.OpenXml.Drawing.Spreadsheet.ShapeProperties sp = new DocumentFormat.OpenXml.Drawing.Spreadsheet.ShapeProperties();
sp.BlackWhiteMode = DocumentFormat.OpenXml.Drawing.BlackWhiteModeValues.Auto;
sp.Transform2D = t2d;
DocumentFormat.OpenXml.Drawing.PresetGeometry prstgeom = new DocumentFormat.OpenXml.Drawing.PresetGeometry();
prstgeom.Preset = DocumentFormat.OpenXml.Drawing.ShapeTypeValues.Rectangle;
prstgeom.AdjustValueList = new DocumentFormat.OpenXml.Drawing.AdjustValueList();
sp.Append(prstgeom);
sp.Append(new DocumentFormat.OpenXml.Drawing.NoFill());
DocumentFormat.OpenXml.Drawing.Spreadsheet.Picture picture = new DocumentFormat.OpenXml.Drawing.Spreadsheet.Picture();
picture.NonVisualPictureProperties = nvpp;
picture.BlipFill = blipfill;
picture.ShapeProperties = sp;
DocumentFormat.OpenXml.Drawing.Spreadsheet.Position pos = new DocumentFormat.OpenXml.Drawing.Spreadsheet.Position();
//The position corrosponds these numbers. X= 600000 & y = 200000 adds up to 1 cell
pos.X = 600000;
pos.Y = 200000;
Extent ext = new Extent();
ext.Cx = extents.Cx;
ext.Cy = extents.Cy;
AbsoluteAnchor anchor = new AbsoluteAnchor();
Xdr.Position pp = new Xdr.Position();
pp.X = 0;
pp.Y = 0;
anchor.Position = pp;
anchor.Position = pos;
anchor.Extent = ext;
anchor.Append(picture);
anchor.Append(new ClientData());
WorksheetDrawing wsd = new WorksheetDrawing();
wsd.Append(anchor);
Drawing drawing = new Drawing();
drawing.Id = dp.GetIdOfPart(imgp);
wsd.Save(dp);
sd.WorkbookPart.WorksheetParts.First().Worksheet.Append(drawing);
MessageBox.Show("Excel File created");
}
ws.Cell(colnum, rownum).Value = AddImageToExcel(wb, ImageToMemoryStream(imagelocation));
最佳答案
ClosedXML 现在具有基本的图像/图片支持。根据 https://github.com/ClosedXML/ClosedXML/wiki/How-can-I-insert-an-image :
using (var wb = new XLWorkbook())
{
var ws = wb.AddWorksheet("Sheet1");
var imagePath = @"c:\path\to\your\image.jpg";
var image = ws.AddPicture(imagePath)
.MoveTo(ws.Cell("B3").Address)
.Scale(.5); // optional: resize picture
wb.SaveAs("file.xlsx");
}
关于image - ClosedXML 添加图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18661239/
我正在阅读的 Excel 表中有日期。 我喜欢做的是强制日期在 mm/dd/yyyy 有没有办法在封闭的 XML 中做到这一点。 我看了一下https://closedxml.codeplex.com
我正在做一个项目,我正在使用 ClosedXML 在 Excel 工作表中记录一些结果。 我有以下数据结构: PortTag 字典只是端口 ID 和标签的键值对(“T”、“U”、“F”或“-”) 这应
我正在使用 ClosedXml,尝试创建时出现以下错误 范围表中的一系列标题。 The cells A13 and P13 are outside the range ''SalesOrderHead
我使用 ClosedXML 生成了一个 Excel 文件,我想知道如何在单元格内执行回车? 最佳答案 您可以使用 Environment.NewLine为单元格的值添加“回车”。 关于c# - Clo
我正在尝试使用 ClosedXML 在应用程序中生成 excel 文档,但是当我尝试运行它时,我收到无法加载文件或程序集服务器错误。 Could not load file or assembly '
我可以使用 OpenXML 将图像添加到 Excel 电子表格中。 但是对于程序的其余部分,我使用 ClosedXML 添加数据。 我可以使用列和行索引在特定单元格添加数据。 如果我可以将图像添加到
我刚刚下载了 ClosedXML,用于我正在编写的一个小应用程序。在应用程序中,我从数据库加载一些数据以输出到 Excel 文件。我的本地数字格式使用逗号表示小数点。看起来 ClosedXML 无法将
我对 ClosedXML 有类似的问题,比如 one但有点不同。SetDataType 方法不起作用。例如,我有值(value)字符串 dps = "3.12.02"这不是日期也不是数字,它是有效文本
我刚刚开始使用 ClosedXML。当我使用以下代码创建新工作簿时,它会自动将“蓝色,表格样式灯 9”应用于每个工作表。我不想在工作表上使用任何样式。如何不指定样式? XLWorkbook wb =
例如我有这样的代码: DataTable table = new DataTable("Name"); table.Columns.Add("CASESENSITIVE", typeof(string
当我尝试将 ClosedXML 工作簿 (XLWorkbook) 保存到内存流时,出现“无法访问已关闭的流”。 public byte[] GetStream() {
我正在使用 closedXML从 C# 生成一个 Excel 文件,我正在尝试查看是否有设置工作表缩放级别的方法。我无法在任何文档或谷歌搜索中找到它? 有人知道怎么做吗? 最佳答案 现在可以通过 IX
当我尝试更改整个列的格式时遇到问题。 我的问题是我没有得到 XLCellValues 操作数。我可以选择 XLDataType.Text 但这不起作用。这是我的: eventSheet.Column(
我正在使用 ClosedXML 将新工作表添加到现有 Excel 文档中。它适用于普通的 Excel 文档。 但是如果 excel 文档工作表在某些单元格上包含条件格式,则会抛出错误 at Syste
我想下载一个 excel 文件并自动将文件发送到一个邮箱地址。下载文件有效,但是当我包含用于发送邮件的代码时,它会抛出一个 FileNotFoundException:'Could not find
我正在使用 C# closedxml 向工作表中添加一个公式,但它返回为不可读的内容。我认为原因是我添加到公式中的斜线,但我需要斜线来转义引号,因为我需要公式中的引号。我还能怎么做? 这是我的代码:
是否可以在 ClosedXML 中创建和存储预定义样式,以便稍后将其应用到某个范围? Just like Excel can .例如通过一个静态类: public static class Repor
我在我的脚本的其他地方使用 ClosedXML,我像这样遍历每一行并且它有效。 var workbook = new XLWorkbook(ObjectRepPath); var rows =
我有 xltx Excel 的模板,当我从它创建(手动)新文档并单击 File->Print 在 Excel 中,第一个工作表适合一页。 然后我借助 ClosedXml 从我的模板创建新文档: usi
我正在尝试将一些数据导出到 Excel 工作表 S1,其数据将在接下来的两个工作表 S2 和 S3 中显示为透视 View 。我能够创建一个单一的支点,而且效果很好。但是,当我创建两个枢轴时,生成的
我是一名优秀的程序员,十分优秀!