C# Xamarin格式的报告(Visual Studio)
由于我正在攻读学士学位,其中一项要求是能够在应用程序中看到一些报告(如SSR或Crystal reports)。正如标题所说,我是在XamarinForms跨平台中完成的(目前,如果我能够在android和wpf中查看它们,那就太好了) 我搜索了一下,没有找到具体的东西,也不知道该怎么办 我从发布在azure云上的.NET Core 2.1中的RESTful API以及我的数据库中获取数据。我试图在API中生成pdf并返回它,这样我就可以在Xamarin表单中查看它,但我对这种方法有一些疑问 我必须指定Azure云帐户不是我的,我不知道如何使用他们服务中列出的所有选项 有没有一种方法可以做到干净漂亮?如果是,您能否简要说明工作流程以及如何执行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表单中查看它,但我对这种方法有一些疑问 我
谢谢 创建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免费版。我会接受这个答案作为解决办法。