诸如,&=Products.Units(subtotal9:Products.ProductID)
表示基于Units列进行数据汇总统计,统计到ProductID上来。

10:判决素数个数

  • 查看
  • 提交
  • 统计
  • 提问

总时间范围: 
1000ms

内存限制: 
65536kB

描述
输入两个整数X和Y,输出两者之间的素数个数(包括X和Y)。

输入
简单只整数X和Y(1 <= X,Y <= 105)。

输出
输出一个整数,表示X,Y之间的素数个数(包括X和Y)。

样例输入
1 100

样例输出
25

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 using namespace std;
 6 char a[10001];
 7 int b[10001];
 8 int maxn=-1;
 9 char ans=0;
10 int beginn;
11 int endn;
12 int now;
13 int tot;
14 int flag=0;
15 int main()
16 {
17     int x,y;
18     cin>>x>>y;
19     for(int i=min(x,y);i<=max(x,y);i++)
20     {
21         flag=0;
22         for(int j=2;j<=sqrt(i);j++)
23         {
24             if(i%j==0)
25             {
26                 flag=1;
27                 break;
28             }
29             
30         }
31         if(flag==0)
32         tot++;
33     }
34     if(min(x,y)==1)
35     cout<<tot-1;
36     else cout<<tot;
37     return 0;
38 }

 

skip:n

            }
            else
            {

            if (!string.IsNullOrEmpty(outError))
            {
                MessageBox.Show(outError);
            }
            else
            {
                Process.Start(fileName);
            }
        }

假设报表的表现方法大概可分为两种:

 可以经过group:normal/merge/repeat 来支配汇总合并等格式的出口,如应用两者的例证:

 如果一旦集中一些班,可以行使&=&=Sum(C{r}:F{r})这样的动态变量来促成。

下的报表如下所示: 

            Process.Start(fileToSave);

默认是左右直方式出口,如果安也horizontal,则是反正在输出内容,见者的例子

譬如说,&=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB)
,则代表因ColumnD列进行汇总统计,统计到ColumnA和ColumnB的分组条件达标。

        }

            //设置实体类对象
            //designer.SetDataSource(“Customers”, entity);

                for (int i = 0; i <= list.Count – 1; i++)
                {
                    try
                    {
                        System.Console.WriteLine(i.ToString() + ”  ” + list[i].GetType());
                        if (list[i].GetType().ToString() == “System.Drawing.Bitmap”)
                        {
                            //插入图片数
                            System.Drawing.Image image = (System.Drawing.Image)list[i];

                Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
                Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
                Aspose.Cells.Cells cells = sheet.Cells;

 &=DataSource.FieldName

horizontal

            designer.SetDataSource(dt);
            designer.SetDataSource(ds.Tables[“Order Details”]);

                int rowIndex = 0;
                for (int i = 0; i < datatable.Columns.Count; i++)
                {
                    DataColumn col = datatable.Columns[i];
                    string columnName = col.Caption ?? col.ColumnName;
                    wb.Worksheets[0].Cells[rowIndex, i].PutValue(columnName);
                    wb.Worksheets[0].Cells[rowIndex, i].Style = style;
                }
                rowIndex++;

 统计 1

 

          
 //打开Excel文件

 

        public DataTable CreateTable(string nameString, string tableName)
        {
            string[] nameArray = nameString.Split(new char[] { ‘,’, ‘;’ });
            List<string> nameList = new List<string>();
            foreach (string item in nameArray)
            {
                if (!string.IsNullOrEmpty(item))
                {
                    nameList.Add(item);
                }
            }

 统计 2

        public static bool ExcelFileToLists(string filepath, out IList[] lists, out string error)
        {
            error = “”;
            lists = null;
            DataTable datatable = new DataTable();
            IList list = new ArrayList();
            Pictures[] pictures;
            if (ExcelFileToDataTable(filepath, out datatable, out error) && GetPicturesFromExcelFile(filepath, out pictures, out error))
            {
                lists = new ArrayList[datatable.Rows.Count];
                //————DataTable转换成IList[]————–
                //数据
                int nRow = 0;
                foreach (DataRow row in datatable.Rows)
                {
                    lists[nRow] = new ArrayList(datatable.Columns.Count);
                    for (int i = 0; i <= datatable.Columns.Count – 1; i++)
                    {
                        lists[nRow].Add(row[i]);
                    }
                    nRow++;
                }
                //图片
                for (int i = 0; i < pictures.Length; i++)
                {
                    foreach (Picture picture in pictures[i])
                    {
                        try
                        {
                            //—-把图纸转换成System.Drawing.Image—-
                            //MemoryStream mstream = new MemoryStream();
                            //mstream.Write(picture.Data, 0, picture.Data.Length);
                            //System.Drawing.Image image = System.Drawing.Image.FromStream(mstream);
                            //—-Image放入IList——
                            //图片有或越界
                            if (picture.UpperLeftRow <= datatable.Rows.Count && picture.UpperLeftColumn <= datatable.Columns.Count)
                            {
                                lists[picture.UpperLeftRow][picture.UpperLeftColumn] = picture.Data;
                            }

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable dt = CreateTable(“测试1,测试2,Test1,Test2”, “testTable”);
            for (int i = 0; i < 100; i++)
            {
                DataRow dr = dt.NewRow();
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    dr[j] = i.ToString();
                }
                dt.Rows.Add(dr);
            }

            DataSet ds = LoadDataSet();//使用DataSet对象
            List<Customers> entity = GetCustomers();//使用实体类对象
            DataTable dt = GetCustomersTable();//使用DataTable对象

            designer.Save(fileToSave, FileFormatType.Excel2003);

                            MemoryStream mstream = new MemoryStream();

        public static bool DataTableToExcel2(DataTable datatable, string filepath, out string error)
        {
            error = “”;
            Aspose.Cells.Workbook wb = new Aspose.Cells.Workbook();

 

&=Customers.CustomerID(group:merge)

表1模板如下所示(其中经过引用集合的目标是经过&=来引用,对象的性或者列名,通过如&=Customer.City方式引用,非常直观方便:

            //根据数据源处理生成报表内容
            designer.Process();

适于数据而未弥加额外的施行(不亮是匪是这般表达)

 

                int nRow = 0;
                foreach (DataRow row in datatable.Rows)
                {
                    nRow++;
                    try
                    {
                        for (int i = 0; i < datatable.Columns.Count; i++)
                        {                           
                            if (row[i].GetType().ToString() == “System.Drawing.Bitmap”)
                            {
                                //——插入图片数——-
                                System.Drawing.Image image = (System.Drawing.Image)row[i];
                                MemoryStream mstream = new MemoryStream();
                                image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
                                sheet.Pictures.Add(nRow, i, mstream);
                            }
                            else
                            {
                                cells[nRow, i].PutValue(row[i]);
                            }
                        }
                    }
                    catch (System.Exception e)
                    {
                        error = error + ” DataTableToExcel: ” + e.Message;
                    }
                }

            //制定报表模板
            string path = System.IO.Path.Combine(Application.StartupPath,”SmartMarkerDesigner.xls”);
            designer.Open(path);

                foreach (DataRow row in datatable.Rows)
                {
                    for (int i = 0; i < datatable.Columns.Count; i++)
                    {
                        wb.Worksheets[0].Cells[rowIndex, i].PutValue(row[i].ToString());
                    }
                    rowIndex++;
                }

&=$VariableArray

 报表2的沙盘如下所示,对象为足以经&=[Order
Detail]方式引用,另外模板支持有参数,其中{r}为当行的变量,翻译到实际的表格可能就是是C4*D4这样的格式了,其中有数个&=表示动态公式引用,区别为寻常的变量和字符,如&=&=C{r}*D{r}后者汇总函数&=&=Sum(C{r}:D{r})等等。

 

            //设置变量对象
            designer.SetDataSource(“Variable”, “Single Variable”);
            //设置集合变量
            designer.SetDataSource(“MultiVariable”, new string[] { “Variable 1”, “Variable 2”, “Variable 3” });
            //设置集合变量
            designer.SetDataSource(“MultiVariable2”, new string[] { “Skip 1”, “Skip 2”, “Skip 3” });

Aspose.Cell控件支持多参数变量的绑定操作,如支持DataSet、Datatable、IList集合,实体类集合、类对象等。

&==DynamicFormula

&=&=RepeatDynamicFormula

{r} – 当前执行变量

 

 另外,模板报表支持有参数进行帮助以,如下所示:

汇集格式变量

 报表3的沙盘如下所示,这个表格模板下了靶变量,对象变量引用方式要&=$Variable这样格式,比集合对象或DataTable对象多矣一个$符号,其中集合支持有遍历参数,如Skip,Horiontal等等。

                return false;
            }
            return true;
        }

&=Employees.EmployeeID(group:normal,skip:1) 

 

统计 3 报表1要命成的机能如下所示(Customers可以假设DataTable对象,也堪List<Customer>实体对象集合。

时飞逝,生活、工作、业余研究总是以不停止忙碌在,转眼快至月底,该月的博客文章任务不竣工,停顿回忆一下,总结一些涉和好的事物出来,大家一同享用一下。本章要介绍报表的变更,基于Aspose.Cell控件的表生成。谈到报表,估计大家都享有领悟与个人的明亮,总的来说,一般的表格生成,基本上是因以下几种植办法:一种植是根据微软Excel内置的引擎来兑现;一栽是结构HTML格式的Excle报表;一种是因控件的方式来拍卖,基于控件有酷多种方,个人认为比较有名的是Aspose.Cell(收费破解)和NPOI(开源)。

            return true;
        }

该函数是因此来实行同样雨后春笋汇总计算的函数,N从1~11subtotalN:Ref,其中Ref代表集中的指定列

                nRow++;
            }
            //————-保存————-
            workbook.Save(filepath);

排序数据供. 如果n=1,那么该列就是排序的首先单至关重要字,例子:
&=Table1.Field3(ascending:1)

 或者这样的表格式

                workbook.Save(filepath);
                return true;
            }
            catch (System.Exception e)
            {
                error = error + ” DataTableToExcel: ” + e.Message;
                return false;
            }
        }

本篇由于篇幅由,介绍至此,下篇继续探索基于模板生成的表内容,包括以目标动态创建行列以及公式,使用Style等方面,并结合实际复杂的表例子,对基于Aspose.Cell报表内容展开进一步的实战分析探讨。 

                    }
                }

    public class AsposeExcelTools
    {

        /// <summary>
        /// Excel文件转换为DataTable.
        /// </summary>
        /// <param name=”filepath”>Excel文件的浑径</param>
        /// <param name=”datatable”>DataTable:返回值</param>
        /// <param name=”error”>错误信息:返回错误信息,没有不当返回””</param>
        /// <returns>true:函数正确实施 false:函数执行错误</returns>
        public static bool ExcelFileToDataTable(string filepath, out DataTable datatable, out string error)
        {
            error = “”;
            datatable = null;
            try
            {
                if (File.Exists(filepath) == false)
                {
                    error = “文件不在”;
                    datatable = null;
                    return false;
                }
                Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
                workbook.Open(filepath);
                Aspose.Cells.Worksheet worksheet = workbook.Worksheets[0];
                datatable = worksheet.Cells.ExportDataTable(0, 0, worksheet.Cells.MaxRow + 1, worksheet.Cells.MaxColumn + 1);
                //————-图片处理————-
                Aspose.Cells.Pictures pictures = worksheet.Pictures;
                if (pictures.Count > 0)
                {
                    string error2 = “”;
                    if (InsertPicturesIntoDataTable(pictures, datatable, out datatable, out error2) == false)
                    {
                        error = error + error2;
                    }
                }
                return true;
            }
            catch (System.Exception e)
            {
                error = e.Message;
                return false;
            }

 应读者要求,放上一个操作例子:http://files.cnblogs.com/wuhuacong/TestAposeCell.rar 

归结,模板报表的变量绑定方式发出以下几种植方式:

 这样封装了Aspose.Cell的操作,每次生成Excel文件要导入Excel内容,就异常有利,只需要而下调用艺术即可成功:

 统计 4

            //设置DataSet对象
            //designer.SetDataSource(ds);

subtotalN函数

由这种报表,一般是于一个数据表格中形,通常的做法是拿这个东西做成控件,一个可以化解分页问题,一个得以缓解导出、打印问题相当,如自之随笔文章《WinForm界面开发的“分页控件”》
介绍的解决办法。

 这些报表,基本上就是以了变量、函数等之概念才能够处理好这些数据,如上面的出库单,里面的老本中心、部门、库房编号等,这些通过变量绑定应该就是好了,而里面的列表,则好由此聚合绑定实现,Aspose.Cell控件功能非常强大,很好支持这些操作,下面一步步介绍该控件制作这好像表格的落实代码。

        public static bool DataTableToExcel(DataTable datatable, string filepath, out string error)
        {
            error = “”;
            try
            {
                if (datatable == null)
                {
                    error = “DataTableToExcel:datatable 为空”;
                    return false;
                }

 

统计 5 

                            image.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);

                        }
                        catch (System.Exception e)
                        {
                            error = error + e.Message;
                        }

        public static bool ListsToExcelFile(string filepath, IList[] lists, out string error)
        {
            error = “”;
            //———-Aspose变量初始化—————-
            Aspose.Cells.Workbook workbook = new Aspose.Cells.Workbook();
            Aspose.Cells.Worksheet sheet = workbook.Worksheets[0];
            Aspose.Cells.Cells cells = sheet.Cells;
            //————-输入数据————-
            int nRow = 0;
            sheet.Pictures.Clear();
            cells.Clear();
            foreach (IList list in lists)
            {

                for (int k = 0; k < datatable.Columns.Count; k++)
                {
                    wb.Worksheets[0].AutoFitColumn(k, 0, 150);
                }
                wb.Worksheets[0].FreezePanes(1, 0, 1, datatable.Columns.Count);
                wb.Save(filepath);
                return true;
            }
            catch (Exception e)
            {
                error = error + ” DataTableToExcel: ” + e.Message;
                return false;
            }

 以上的代码说明了改控件支持之各种参数变量,我们先行瞧表的模版,然后看看表的变化内容,对比一下即便又直观了。

统计 6统计 7代码

 

回报表2的转变效果如下所示 

                //为单元格添加样式    
                Aspose.Cells.Style style = wb.Styles[wb.Styles.Add()];
                //设置居中
                style.HorizontalAlignment = Aspose.Cells.TextAlignmentType.Center;
                //设置背景颜色
                style.ForegroundColor = System.Drawing.Color.FromArgb(153, 204, 0);
                style.Pattern = BackgroundType.Solid;
                style.Font.IsBold = true;

            return CreateTable(nameList, tableName);
        }

                }

 

            //创建一个workbookdesigner对象
            WorkbookDesigner designer = new WorkbookDesigner();

 

分级表示1=AVERAGE, 2=COUNT,3=COUNTA, 4=MAX, 5=MIN,…9=SUM等等 

ascending:n / descending:n

另外一栽是以Excel文件作为模板,然后填入必要之始末,形成于综合性,复杂性较高的报表,这种报表一般比较专业、比较正规好看,在一部分非正规之场合,必须采用这些固定格式的表,如下所示:

 

那使是指向同一列,不同行的字段进行集中呢?,那样就还有益于,不用这样复杂了,你要是以普通的集中函数如=Sum(C3:C4)这样的格式,就好了,如果走态多,Excel会自动调整Sum函数里面的队列引用了,可能最终输出会变为=Sum(C3:C11)这样了。 

            //保存Excel文件
            string fileToSave = System.IO.Path.Combine(Application.StartupPath, “SmartMarker.xls”);
            if (File.Exists(fileToSave))
            {
                File.Delete(fileToSave);
            }

 统计 8

        }

统计 9 

{2}, {-1} – 当前推行之舞狮位置 

 统计 10

一如既往栽是通用的二维表导出的Excel格式,这种方式通过包一个操作类,传递一个DataTable参数,把数量导出就足以了。这种报表特点是操作便利,通用,能应付一般常用之数据报表,如下所示;

                            sheet.Pictures.Add(nRow, i, mstream);
                        }
                        else
                        {
                            cells[nRow, i].PutValue(list[i]);
                        }
                    }
                    catch (System.Exception e)
                    {
                        error = error + e.Message;
                    }

            string outError = “”;
            string fileName = @”C:\test.xls”;
            AsposeExcelTools.DataTableToExcel2(dt, fileName, out outError);

&=$VariableName

自,也可将导入导出Excel的操作封装成一个公用的辅来调用,如己包的Aspose.Cell的导入导出处理函数如下所示:

 统计 11

 

每行记录跳了的数码,n=1代表相继遍历N=2则超越一个遍历

&=[Data Source].[Field Name]

统计 12

动态公式变量 

表3底变型效果如下所示  

noadd

统计 13 

            try
            {
                if (datatable == null)
                {
                    error = “DataTableToExcel:datatable 为空”;
                    return false;
                }

          
 //设置Datatable对象

此外,上面模板被视&=&=C{r}*D{r}这样的动态公式,用于对列的施用,动态公式支持下的援变量: