在我攻读学士学位的过程中,要求之一是能够在应用程序中查看某些报告(如SSRS或Crystal Reports)。如标题所述,我正在XamarinForms跨平台中执行此操作(目前,如果我能够在android和wpf中查看它们,将会很棒)。
我进行了搜索,但没有找到具体的内容,也不知道该怎么办。
我正在从.NET Core 2.1中的RESTful API获取数据,该数据发布在Azure云以及数据库中。我试图在API中制作一个pdf文件,然后将其返回,以便可以在XamarinForms中查看它,但对此方法我有一些疑问。
我必须指定Azure Cloud帐户不是我的帐户,并且我不知道如何使用其服务中列出的所有选项。
有没有一种使它整洁又漂亮的方法?如果可以,您能否解释一下简短的工作流程以及如何做?
谢谢!
答案 0 :(得分:0)
创建Pdf是最好的选择,这在使用PDFSharp或使用IO流类的xamarin表单上非常有效
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