Я пытаюсь сделать что-то вроде линейной диаграммы, но с линиями из «Фигур», а не просто обычной линейной диаграммой.
У меня уже есть прямая линия слева направо, от сверху вниз и слева-сверху вправо-вниз. Но если я попытаюсь провести линию от верхнего правого угла к левому нижнему (или наоборот), она просто создаст линию от левого верхнего угла к правому нижнему.
Я сделал это с помощью OpemXml.
Я упускаю что-то очевидное?
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using D = DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DS = DocumentFormat.OpenXml.Drawing.Spreadsheet;
public class ExcelLinie
{
static void Main()
{
string filePath = @"C:\Users\Username\Desktop\Example.xlsx";
using (SpreadsheetDocument document = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
{
// Create Workbook-Part
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add Worksheet
WorksheetPart worksheetPart = workbookPart.AddNewPart();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets in workbook
Sheets sheets = document.WorkbookPart.Workbook.AppendChild(new Sheets());
// New Sheet
Sheet sheet = new Sheet()
{
Id = document.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "MySheet"
};
sheets.Append(sheet);
// Add Drawing
DrawingsPart drawingsPart;
if (worksheetPart.DrawingsPart == null)
{
drawingsPart = worksheetPart.AddNewPart();
worksheetPart.Worksheet.AppendChild(new Drawing() { Id = worksheetPart.GetIdOfPart(drawingsPart) });
}
else
{
drawingsPart = worksheetPart.DrawingsPart;
}
// Creates XML-Structure
var worksheetDrawing = new WorksheetDrawing();
// Creates Line
var twoCellAnchor = new TwoCellAnchor(
new DS.FromMarker( // Start point
new ColumnId("5"),
new ColumnOffset("0"),
new RowId("5"),
new RowOffset("0")
),
new DS.ToMarker( // End point
new ColumnId("3"),
new ColumnOffset("0"),
new RowId("10"),
new RowOffset("0")
),
new ConnectionShape(
new NonVisualConnectionShapeProperties(
new NonVisualDrawingProperties() { Id = (UInt32Value)3U, Name = "Straight Connector 2" },
new NonVisualConnectorShapeDrawingProperties()
), // Shape
new ShapeProperties(
new D.Transform2D(
new D.Offset() { X = 0, Y = 0 },
new D.Extents() { Cx = 0, Cy = 0 }
),
new D.PresetGeometry(
new D.AdjustValueList()
)
{ Preset = D.ShapeTypeValues.Line },
new D.Outline(
new D.SolidFill(
new D.RgbColorModelHex() { Val = "326417" } // Color Hexcode
)
)
{
Width = 12700 * 2 // Thickness 1 Point = 12700 EMUs
}
)
),
new ClientData()
);
worksheetDrawing.Append(twoCellAnchor);
drawingsPart.WorksheetDrawing = worksheetDrawing;
drawingsPart.WorksheetDrawing.Save();
// Save
workbookPart.Workbook.Save();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -from-cell
Есть ли возможный способ на С# создать лист Excel со строкой от ячейки E5 до B2 (сверху справа вниз слева) (предпочтител ⇐ C#
Место общения программистов C#
1731600809
Anonymous
Я пытаюсь сделать что-то вроде линейной диаграммы, но с линиями из «Фигур», а не просто обычной линейной диаграммой.
У меня уже есть прямая линия слева направо, от сверху вниз и слева-сверху вправо-вниз. Но если я попытаюсь провести линию от верхнего правого угла к левому нижнему (или наоборот), она просто создаст линию от левого верхнего угла к правому нижнему.
Я сделал это с помощью OpemXml.
Я упускаю что-то очевидное?
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Spreadsheet;
using D = DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Drawing.Spreadsheet;
using DS = DocumentFormat.OpenXml.Drawing.Spreadsheet;
public class ExcelLinie
{
static void Main()
{
string filePath = @"C:\Users\Username\Desktop\Example.xlsx";
using (SpreadsheetDocument document = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
{
// Create Workbook-Part
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
// Add Worksheet
WorksheetPart worksheetPart = workbookPart.AddNewPart();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets in workbook
Sheets sheets = document.WorkbookPart.Workbook.AppendChild(new Sheets());
// New Sheet
Sheet sheet = new Sheet()
{
Id = document.WorkbookPart.GetIdOfPart(worksheetPart),
SheetId = 1,
Name = "MySheet"
};
sheets.Append(sheet);
// Add Drawing
DrawingsPart drawingsPart;
if (worksheetPart.DrawingsPart == null)
{
drawingsPart = worksheetPart.AddNewPart();
worksheetPart.Worksheet.AppendChild(new Drawing() { Id = worksheetPart.GetIdOfPart(drawingsPart) });
}
else
{
drawingsPart = worksheetPart.DrawingsPart;
}
// Creates XML-Structure
var worksheetDrawing = new WorksheetDrawing();
// Creates Line
var twoCellAnchor = new TwoCellAnchor(
new DS.FromMarker( // Start point
new ColumnId("5"),
new ColumnOffset("0"),
new RowId("5"),
new RowOffset("0")
),
new DS.ToMarker( // End point
new ColumnId("3"),
new ColumnOffset("0"),
new RowId("10"),
new RowOffset("0")
),
new ConnectionShape(
new NonVisualConnectionShapeProperties(
new NonVisualDrawingProperties() { Id = (UInt32Value)3U, Name = "Straight Connector 2" },
new NonVisualConnectorShapeDrawingProperties()
), // Shape
new ShapeProperties(
new D.Transform2D(
new D.Offset() { X = 0, Y = 0 },
new D.Extents() { Cx = 0, Cy = 0 }
),
new D.PresetGeometry(
new D.AdjustValueList()
)
{ Preset = D.ShapeTypeValues.Line },
new D.Outline(
new D.SolidFill(
new D.RgbColorModelHex() { Val = "326417" } // Color Hexcode
)
)
{
Width = 12700 * 2 // Thickness 1 Point = 12700 EMUs
}
)
),
new ClientData()
);
worksheetDrawing.Append(twoCellAnchor);
drawingsPart.WorksheetDrawing = worksheetDrawing;
drawingsPart.WorksheetDrawing.Save();
// Save
workbookPart.Workbook.Save();
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79189599/is-there-a-possible-way-in-c-sharp-to-make-an-excel-sheet-with-a-line-from-cell[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия