2013-07-08 4 views
1

Где-то в моем приложении мне нужно создать слайды PowerPoint и заполнить его значениями DB. Я могу создать слайды с помощью локального шаблона. Но я не понимаю, как заполнить его значениями DB. Я искал веб-сайт и нашел this, но это не помогает мне. График или график я не хочу заполнять. Это простой текст, основанный на значениях DB.
Может кто-нибудь помочь мне здесь?Задать презентацию PowerPoint с значениями базы данных

+0

Ссылка, которую вы указали, поможет вам создать таблицу, что вы ищете? Вам просто нужно вернуть значения DB и для каждой строки, создать новую таблицу в Powerpoint и заполнить ее. – mike27015

ответ

5

Этот следующий код позволяет создать новый слайд, выбрать его и добавить значения в таблицу. Вам просто нужно сейчас, чтобы прочитать DB и заполнить его в

int newaddslidecounter = 0; // checking how many new slides have to be inserted in order to split the table 
int startmultiplicator=1; // used in order to return current table row that must be pasted in new table 
int amountrowsshown =7; // amount of shown rows per table 
int fontsize = 12; 
// set position of new table/chart 
int topsize = 100; 
int leftsize = 100; 
int widthsize = 150; 
int heightsize = 150; 
Boolean alreadycreated = false; // checks if a table has already been created 
//Resizing all tables 
//and insert new Excel table instead while importing data from Excel table 
//used for visualization of data 
foreach (PowerPoint.Slide slide in presentation.Slides) 
      { 
       slide.Select(); 
       //loop through all shapes in slide 
       foreach (PowerPoint.Shape pptshape in slide.Shapes) 
       { 
        //Console.WriteLine("Shape type : " + pptshape.Type.ToString()); 
        //check if current shape is a table 
        //in order to do the manipulation 
        if (pptshape.Type.ToString().Equals("msoTable")) 
        { 
         for (int i = 1; i <= pptshape.Table.Rows.Count; i++) 
         { 
          for (int j = 1; j <= pptshape.Table.Columns.Count; j++) 
          { 
           /// checks if the module of the current row and the amount of maximum 
           /// shown rows to be visible in table is the same 
           // Console.WriteLine("row= " + i + " col= " + j); 
           if ((i % amountrowsshown) == 0 && alreadycreated == false) 
           { 
            PowerPoint.Table objTable = null; 
            /// Add new slide if table requires more than one slide 
            if (newaddslidecounter == 0) 
            { 
             /// Add new table object in the slide           
             objTable = presentation.Slides[slide.SlideIndex].Shapes.AddTable(amountrowsshown, pptshape.Table.Columns.Count, topsize, leftsize, slide.Master.Width - widthsize, slide.Master.Height - heightsize).Table; 
            } 
            else 
            { 
             presentation.Slides.Add(slide.SlideIndex + newaddslidecounter, NetOffice.PowerPointApi.Enums.PpSlideLayout.ppLayoutClipArtAndVerticalText); 
             /// Add new table object in the slide           
             objTable = presentation.Slides[slide.SlideIndex + newaddslidecounter].Shapes.AddTable(amountrowsshown, pptshape.Table.Columns.Count, topsize, leftsize, slide.Master.Width - widthsize, slide.Master.Height - heightsize).Table; 
            } 
            int incrementer = 1; 
            /// Run through the created new table and paste all the previous table values 
            for(int k=startmultiplicator;k<=i;k++) 
            { 
             for(int l=1;l<=pptshape.Table.Columns.Count;l++) 
             { 
              objTable.Cell(incrementer,l).Shape.TextFrame.TextRange.Text=pptshape.Table.Cell(k,l).Shape.TextFrame.TextRange.Text; 
              objTable.Cell(incrementer, l).Shape.TextFrame.TextRange.Font.Size = fontsize; 
             } 
             incrementer++; 
            } 
            startmultiplicator += amountrowsshown; 
            alreadycreated = true; 
            newaddslidecounter++; 
           } 
          } 
          alreadycreated = false; 
         } 
         /// In case is still some rows left which haven't been considered 
         /// we copy those in a new table 
         //Console.WriteLine("Create new table before leaving"); 
         // Console.WriteLine(startmultiplicator); 
         if (startmultiplicator <= pptshape.Table.Rows.Count) 
         { 
          PowerPoint.Table objTable = null; 
          if (startmultiplicator < amountrowsshown) 
          { 
           /// Add new table object in the slide 
           objTable = presentation.Slides[slide.SlideIndex].Shapes.AddTable(amountrowsshown, pptshape.Table.Columns.Count, topsize, leftsize, slide.Master.Width - widthsize, slide.Master.Height - heightsize).Table;  
          } 
          else 
          { 
           /// Don't add new slide for last rows 
           presentation.Slides.Add(slide.SlideIndex + newaddslidecounter, NetOffice.PowerPointApi.Enums.PpSlideLayout.ppLayoutClipArtAndVerticalText); 
           // Add new table object in the slide 
           objTable = presentation.Slides[slide.SlideIndex + newaddslidecounter].Shapes.AddTable(amountrowsshown, pptshape.Table.Columns.Count, topsize, leftsize, slide.Master.Width - widthsize, slide.Master.Height - heightsize).Table; 
          } 
          int incrementer = 1; 
          /// Run through the created new table and paste all the previous table values 
          for (int k = startmultiplicator; k <= pptshape.Table.Rows.Count; k++) 
          { 
           for (int l = 1; l <= pptshape.Table.Columns.Count; l++) 
           { 
            objTable.Cell(incrementer, l).Shape.TextFrame.TextRange.Text = pptshape.Table.Cell(k, l).Shape.TextFrame.TextRange.Text; 
            objTable.Cell(incrementer, l).Shape.TextFrame.TextRange.Font.Size = fontsize; 
           } 
           incrementer++; 
          } 
          objTable.Application.Top = topsize; 
          objTable.Application.Left = leftsize; 
          objTable.Application.Width = slide.Master.Width - widthsize; 
          objTable.Application.Height = slide.Master.Height - heightsize; 
         } 
         pptshape.Delete(); 
        } 

       } 
       newaddslidecounter=0; 
       startmultiplicator=1; 
      } 

** Отредактировано:.

исходный код для чтения данных из БД Reading values from SQL database in C#

using (SqlConnection connection = new SqlConnection(connectionString) 
using (SqlCommand command = new SqlCommand("select * from Requests where Complete = 0", connection)) 
{ 
    connection.Open(); 
    using (SqlDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      Console.WriteLine(reader["Username"].ToString()); 
      Console.WriteLine(reader["Item"].ToString()); 
      Console.WriteLine(reader["Amount"].ToString()); 
      Console.WriteLine(reader["Complete"].ToString()); 
     } 
    } 
} 

Connexion к базе данных, например, можно найти здесь:

http://www.daniweb.com/software-development/csharp/threads/21636/how-do-you-connect-to-a-sql-database-using-c

try 
{ 
    SqlConnection thisConnection = new SqlConnection(@"Network Library=DBMSSOCN;Data Source=192.168.0.100,1433;database=Northwind;User id=Paladine;Password=;"); 
    thisConnection.Open(); 
    SqlCommand thisCommand = thisConnection.CreateCommand(); 
    thisCommand.CommandText = "SELECT CustomerID, CompanyName FROM Customers"; 
    SqlDataReader thisReader = thisCommand.ExecuteReader(); 
    while (thisReader.Read()) 
    { 
       Console.WriteLine("\t{0}\t{1}", thisReader["CustomerID"], thisReader["CompanyName"]); 
    } 
    thisReader.Close(); 
    thisConnection.Close(); 
} 
catch (SqlException e) 
{ 
    Console.WriteLine(e.Message); 
} 
+1

Спасибо за общий доступ к коду, но есть много vaiables undefined. – Nitish

+0

Я изменил свой код соответственно. Теперь вы должны увидеть больше информации о разных переменных. Причина, по которой я делал это, состояла в том, чтобы разрешить создание нескольких таблиц в презентации PowerPoint, означает, что если ваши строки из вашей базы данных равны 100, вы разделите их в разных таблицах в powerpoint, а также, если вы хотите ограничить количество столбцов должно быть видимым. Кроме того, я добавил информацию о подключении к базе данных и прочитал данные, а также выделил строки, которые вы хотите использовать, и создать таблицу со связанным размером столбца. – mike27015

+0

Вы наконец нашли решение или отличный подход с кодом, который я представил? – mike27015

Смежные вопросы