معرفی کتابخانه PdfReport
اگر «هر شکلی» منظور ساخت گزارشات نامنظم است، شاید این روش استفاده از قالبهای open office بهتر باشد.
بهتر است فعلا از توزیعهای روزانهی EF Core 8 استفاده کنید یا تا انتشار نگارش 8.0.2 آن صبر کنید
If you are updating to EF Core 8, consider using the daily builds, or wait for the 31 fixes coming in 8.0.2 in Februrary 2024
در برنامههای تحت وب، در بعضی موارد نیاز داریم تا برای کاربر، امکان ثبت دادههایش را با آپلود فایلهای Excel فراهم کنیم. برای مثال در مطلب خواندن اطلاعات از فایل اکسل با استفاده از LinqToExcel ، امکان خواندن از Excel توضیح داده شده، اما نقطه ضعف این روشها، وابستگی به Providerهای مایکروسافت است که در صورت عدم نصب آن ها:
Microsoft.Jet.OLEDB.4.0 provider --> Excel 97-2003 format (.xls) Microsoft.ACE.OLEDB.12.0 provider --> Excel 2007+ format (.xlsx)
The ‘Microsoft.Jet.OLEDB.4.0’ provider is not registered on the local machine The ‘Microsoft.ACE.OLEDB.12.0’ provider is not registered on the local machine
البته راه حل، نصب Office 2007 Data Connectivity Components یا Office 2010 Database Engine بر روی سرور میباشد. اما اگر هاست اشتراکی بوده و اجازه نصب نداشته باشیم؟
در این مقاله به بررسی کتابخانه ExcelDataReader میپردازیم که امکان خواندن فایلهای اکسل را بدون نیاز به نصب هرگونه پیش نیازی بر روی سرور، برای ما فراهم میکند.
برای این کار:
1- ابتدا یک پروژه خالی Asp.Net MVC را ایجاد میکنیم.
2- با استفاده از دستورات زیر در Package Manager Console بستههای ExcelDataReader و ExcelDataReader.DataSet را نصب میکنیم:
PM> Install-Package ExcelDataReader PM> Install-Package ExcelDataReader.DataSet
3- سپس کنترلر مورد نظر (در اینجا HomeController) را ایجاد نموده و اکشن Upload را بصورت زیر در آن قرار میدهیم:
public ActionResult Upload() { return View(); }
4- برای آپلود فایل، اکشن دیگری را با نام Upload نیاز داریم که آن را بصورت زیر ایجاد میکنیم:
توجه: در قطعه کد زیر سعی شده از حداقل کانفیگ کتابخانه استفاده شود. کانفیگ بیشتر
[HttpPost] [ValidateAntiForgeryToken] public ActionResult Upload(HttpPostedFileBase upload) { // اعتبار سنجی فایل آپلود شده if (upload != null && upload.ContentLength > 0 && (upload.FileName.EndsWith(".xls") || upload.FileName.EndsWith(".xlsx"))) { // با خواندن فایل به صورت باینری، این کتابخانه نیازی به نصب پیش نیازهای آفیس ندارد Stream stream = upload.InputStream; // نیازی به نگرانی در مورد پسوند فایل نیست // کتابخانه به صورت خودکار کلاس مورد نظر برای پسوند مربوطه را استفاده میکند // ExcelDataReader.ExcelBinaryReader یا ExcelDataReader.ExcelOpenXmlReader IExcelDataReader reader = ExcelReaderFactory.CreateReader(stream); // روش ذکر شده در قسمت دوم برای خواندن کل اطلاعات بصورت یکجا DataSet result = reader.AsDataSet(new ExcelDataSetConfiguration() { ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration() { // true: ردیف اول از فایل را به عنوان هدر در نظر میگیرد // مقدار پیش فرض: false UseHeaderRow = true } }); reader.Close(); return View(result.Tables[0]); } ModelState.AddModelError("File", "Please upload Excel file ..."); return View(); }
روش دیگر خواندن اطلاعات:
do { while (reader.Read()) { // reader.GetDouble(0); } } while (reader.NextResult());
5- خب حالا از یک View (با نام Upload) هم برای ارسال فایل و همچنین نمایش محتویات آپلود شده بصورت زیر استفاده میکنیم:
@model System.Data.DataTable @using System.Data; <h2>Upload File</h2> @using (Html.BeginForm("Upload", "Home", null, FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() @Html.ValidationSummary() <div> <input type="file" id="dataFile" name="upload" /> </div> <div> <input type="submit" value="Upload" /> </div> if (Model != null) { <table> <thead> <tr> @foreach (DataColumn col in Model.Columns) { <th>@col.ColumnName</th> } </tr> </thead> <tbody> @foreach (DataRow row in Model.Rows) { <tr> @foreach (DataColumn col in Model.Columns) { <td>@row[col.ColumnName]</td> } </tr> } </tbody> </table> } }
6- حالا پروژه را اجرا میکنیم تا خروجی را مشاهده کنیم.
ابتدا فایل مورد نظر را انتخاب و آپلود میکنیم:
و خروجی به صورت زیر خواهد بود:
کدهای کامل این مثال را از اینجا میتوانید دریافت کنید: UploadExcelFiles.rar
Service Pack 2 آفیس 2010
Service Pack 2 for Microsoft Office 2010 (KB2687455) 64-Bit Edition
Service Pack 2 for Microsoft PowerPoint Viewer (KB2687456) 32-Bit Edition
Service Pack 2 for Microsoft SharePoint Foundation 2010 (KB2687464)
Service Pack 2 for Microsoft Office 2010 Language Pack (KB2687449) 32-Bit Edition
Service Pack 2 for Microsoft SharePoint 2010 Indexing Connector for Documentum (KB2687459)
Service Pack 2 for Microsoft Visio 2010 (KB2687468) 64-Bit Edition
Service Pack 2 for Microsoft Access 2010 Runtime (KB2687444) 32-Bit Edition
Service Pack 2 for SharePoint Foundation 2010 Client Object Model Redistributable (KB2687467) 32-Bit Edition
Service Pack 2 for Microsoft Access 2010 Runtime (KB2687444) 64-Bit Edition
لیست کامل
استفاده از یک فرم از پیش طراحی شده به عنوان Background
«ساخت یک گزارش ساز به کمک iTextSharp و Open Office»
در اینجا راحت میتونید تصویر مورد نظر رو در Open Office تبدیل به قالب کنید و قسمتهای پر شونده رو با TextBox پر کنید. بعد با استفاده از AcroForms و iTextSharp که در مقاله فوق توضیح داده شد، نسبت به پر کردن آن قالب اقدام کنید.
گزارش در سیلورلایت
نگاهی به TLDs های جدید
There are now 40 such TLDs: android, app,
bank, chrome, dev, foo, gle, gmail, google, hangout, insurance, meet,
page, play, search, youtube, esq, fly, eat, nexus, ing, meme, phd, prof,
boo, dad, day, channel, hotmail, mov, zip, windows, skype, azure, office, bing, xbox, microsoft
, notably including ZIP and MOV.
Final releases of Visual Studio 2015 Update 1 and Team Foundation Server 2015 Update 1.
- Visual Studio 2015 Update 1
- Team Foundation Server 2015 Update 1
- Team Foundation Server Express 2015 Update 1
- TFS Office Integration installer
- TFS Project Server Extensions
Here are the release notes: