2013-06-13 2 views
2

Надеюсь, это не слишком сложно, однако я разрабатываю приложение с C# и Visual Studio 2012, которое анализирует текст и создает серию из List<T>. При этом я успешно экспортировал эти данные в электронную таблицу Excel. Тем не менее, я дошел до создания графика на новом листе, однако я не могу понять, как взять данные, либо из одного из списков, либо из одного из других рабочих листов и нарисовать его.Учебники Excel и графики

Это фрагмент кода, который я использую для создания графика:

const string topLeft = "A1"; 
const string bottomRight = "A4"; 
const string graphTitle = "License use"; 
const string xAxis = "Time"; 
const string yAxis = "Number of licenses"; 

var charts = worksheet.ChartObjects() as 
Microsoft.Office.Interop.Excel.ChartObjects; 
var chartObject = charts.Add(60, 10, 300, 300) as 
Microsoft.Office.Interop.Excel.ChartObject; 
var chart = chartObject.Chart; 

// Set chart range. 
range = worksheet.get_Range(topLeft, bottomRight); 
chart.SetSourceData(range); 

// Set chart properties. 
chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine; 
chart.ChartWizard(Source: range, 
Title: graphTitle, 
CategoryTitle: xAxis, 
ValueTitle: yAxis); 

Если нужно будет, я могу опубликовать остальную часть создания документа Excel.

ответ

0

Если Interop не требуется, попробуйте использовать OpenKML SDK, вы можете создать шаблон документа, который вы хотите смоделировать после него, и использовать инструмент OpenXML SDK для проверки документа и просмотра кода, используемого для его создания, затем фактор, который в объект, который вы пытаетесь создать. Существует много больше информации об этом, по меньшей

http://openXMLDeveloper.org

и DLL и инструменты можно найти на

http://www.microsoft.com/en-us/download/details.aspx?id=30425

Есть несколько видео на YouTube, которые демонстрируют это, как хорошо. Это решение будет работать только с документами, основанными на OpenXML (т. Е. Office 2007 и более поздними).

0

Просто создал простой пример, где у вас есть компания A B C и количество лицензий, которые у них есть в течение 5 лет.

вы можете видеть, что вы можете выбрать рабочий лист по имени, а затем добавить к нему данные и добавить к нему диаграмму.

Sheets excelSheets = workbook.Worksheets; 
    string currentSheet = "Sheet1"; 
    Worksheet worksheet1 = (Worksheet)excelSheets.get_Item(currentSheet); 

на выбранном листе Вы можете добавить свой график, и сказать ему, что вы хотите диапазон от worksheet1, вы можете использовать диапазон любого листа и подтолкнуть ее к этой диаграмме с помощью SetSourceData надеюсь, это поможет ответить на ваш вопрос не выясняя, как «брать данные с одного из других рабочих листов и начертить его».

 var app = new Application(); 
     app.Visible = true; 
     var workbook = app.Workbooks.Add(1); 

     Sheets excelSheets = workbook.Worksheets; 
     string currentSheet = "Sheet1"; 
     Worksheet worksheet1 = (Worksheet)excelSheets.get_Item(currentSheet); 


     worksheet1.Cells[1, 1] = ""; 
     worksheet1.Cells[1, 2] = "Year 1"; 
     worksheet1.Cells[1, 3] = "Year 2"; 
     worksheet1.Cells[1, 4] = "Year 3"; 
     worksheet1.Cells[1, 5] = "Year 4"; 
     worksheet1.Cells[1, 6] = "Year 5"; 

     worksheet1.Cells[2, 1] = "Company A"; 
     worksheet1.Cells[2, 2] = "10"; 
     worksheet1.Cells[2, 3] = "50"; 
     worksheet1.Cells[2, 4] = "70"; 
     worksheet1.Cells[2, 5] = "70"; 
     worksheet1.Cells[2, 6] = "70"; 

     worksheet1.Cells[3, 1] = "Company B"; 
     worksheet1.Cells[3, 2] = "30"; 
     worksheet1.Cells[3, 3] = "70"; 
     worksheet1.Cells[3, 4] = "80"; 
     worksheet1.Cells[3, 5] = "80"; 
     worksheet1.Cells[3, 6] = "80"; 

     worksheet1.Cells[4, 1] = "Company C"; 
     worksheet1.Cells[4, 2] = "55"; 
     worksheet1.Cells[4, 3] = "65"; 
     worksheet1.Cells[4, 4] = "75"; 
     worksheet1.Cells[4, 5] = "75"; 
     worksheet1.Cells[4, 6] = "75"; 

     ChartObjects xlCharts = (ChartObjects)worksheet1.ChartObjects(Type.Missing); 
     ChartObject myChart = (ChartObject) xlCharts.Add(60, 10, 300, 300); 
     Range chartRange = worksheet1.get_Range("A1", "F4"); 

     Chart chartPage = myChart.Chart; 
     chartPage.SetSourceData(chartRange, System.Reflection.Missing.Value); 
     chartPage.ChartType = XlChartType.xlLine; 
Смежные вопросы