Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin格式的报告(Visual Studio)_C#_Azure_Xamarin.forms - Fatal编程技术网

C# Xamarin格式的报告(Visual Studio)

C# Xamarin格式的报告(Visual Studio),c#,azure,xamarin.forms,C#,Azure,Xamarin.forms,由于我正在攻读学士学位,其中一项要求是能够在应用程序中看到一些报告(如SSR或Crystal reports)。正如标题所说,我是在XamarinForms跨平台中完成的(目前,如果我能够在android和wpf中查看它们,那就太好了) 我搜索了一下,没有找到具体的东西,也不知道该怎么办 我从发布在azure云上的.NET Core 2.1中的RESTful API以及我的数据库中获取数据。我试图在API中生成pdf并返回它,这样我就可以在Xamarin表单中查看它,但我对这种方法有一些疑问 我

由于我正在攻读学士学位,其中一项要求是能够在应用程序中看到一些报告(如SSR或Crystal reports)。正如标题所说,我是在XamarinForms跨平台中完成的(目前,如果我能够在android和wpf中查看它们,那就太好了)

我搜索了一下,没有找到具体的东西,也不知道该怎么办

我从发布在azure云上的.NET Core 2.1中的RESTful API以及我的数据库中获取数据。我试图在API中生成pdf并返回它,这样我就可以在Xamarin表单中查看它,但我对这种方法有一些疑问

我必须指定Azure云帐户不是我的,我不知道如何使用他们服务中列出的所有选项

有没有一种方法可以做到干净漂亮?如果是,您能否简要说明工作流程以及如何执行


谢谢

创建Pdf是最好的选择,这在xamarin表单上非常有效使用PDFSharp或使用IO流类

 public string SaveFiles(PDFFormatModel pd)
    {

        PdfPTable table = new PdfPTable(2);
        PdfPCell cell = new PdfPCell(new Phrase("Cell Name"));
        cell.Colspan = 2;
        cell.HorizontalAlignment = iTextSharp.text.Element.ALIGN_CENTER;
        table.AddCell(cell);
        table.AddCell("Cell 1 ");
        table.AddCell("Cell 1 Value");
        table.AddCell("Cell 2 ");
        table.AddCell("Cell 2 Value");


        var pdfDoc = new Document(PageSize.A4, 10f, 10f, 10f, 0f);
        string root = null;
        if (Android.OS.Environment.IsExternalStorageEmulated)
        {
            root = Android.OS.Environment.ExternalStorageDirectory.ToString();
        }
        else
            root = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        Java.IO.File myDir = new Java.IO.File(root + "/MAMN");
        myDir.Mkdir();

        Java.IO.File file = new Java.IO.File(myDir, pd.FileName);
        if (file.Exists()) file.Delete();
        using (var memoryStream = new System.IO.MemoryStream())
        {
            FileOutputStream outs = new FileOutputStream(file);
            var writer = PdfWriter.GetInstance(pdfDoc, memoryStream);
            pdfDoc.Open();
            pdfDoc.Add(table);

            pdfDoc.Close();
            byte[] bytes = memoryStream.ToArray();
            var documentsPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.MyDocuments);
            var filePath = Path.Combine(root, pd.FileName);            
            outs.Write(bytes);
            outs.Flush();
            outs.Close();
            if (file.Exists())
            {
                Android.Net.Uri path = Android.Net.Uri.FromFile(file);
                string extension = Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString());
                string mimeType = Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension);
                Intent intent = new Intent(Intent.ActionView);
                intent.SetDataAndType(path, mimeType);
                Forms.Context.StartActivity(Intent.CreateChooser(intent, "Choose App"));
            }             
                return filePath;

        }       
    }

此外,如果您需要用图表或图形表示数据,请选择MicroCharts或Syncfusion,这是IMO的主题外选项,但服务器端生成的PDF对于REST API来说是完全合适的。您也可以考虑HTML视图(呈现的服务器端和显示的客户端),当用小屏幕查看时可能更好。您能告诉我您使用的参考文献吗?因为我会犯很多错误。对于某些对象有特殊的类吗?你使用的是什么版本的xamarin表单?Xam.iTextSharpLGPL使用此参考,Internet上也有许多可用的示例。我知道它已经过去了两年,但我是如何解决这个问题的,是通过为学生使用Syncfusion免费版。我会接受这个答案作为解决办法。