sharat naik Ответов: 1

Как добавить несколько таблиц данных в рабочую книгу на одном листе


SHIFT   HANK	  PROD	         UPTOPROD	SHORTFALL	ENERGY
SHIFT 1	434.106	1761.373	13020.896	229.627	        3755.72
SHIFT 2	444.589	1804.415	13685.928	136.785 	3815.104
SHIFT 3	347.878	1407.073	11670.846	191.327	        2977.936

SHIFT	HANK	PROD	UPTOPROD	SHORTFALL	ENERGY
SHIFT 1	434.106	1761.373	13020.896		3755.72
SHIFT 2	444.589	1804.415	13685.928		3815.104
SHIFT 3	347.878	1407.073	11670.846		2977.936

SHIFT	HANK	PROD	UPTOPROD	SHORTFALL	ENERGY
SHIFT 1	434.106	1761.372	13020.896		3755.72
SHIFT 2	444.589	1804.415	13685.928		3815.104
SHIFT 3	347.878	1407.073	11670.846		2977.936

здесь 3 datatable отображения данных, я хочу выше 3 datatable данных в одном листе

Что я уже пробовал:

<pre>using (wb = new XLWorkbook())
                                    {
                                        wb.Worksheets.Add(ds_temp_table);
                                        using (MemoryStream memoryStream = new MemoryStream())
                                        {                                           
                                            var excelApp = new Microsoft.Office.Interop.Excel.Application();
                                            excelApp.Visible = true;
                                            excelApp.Workbooks.Add();
                                            Microsoft.Office.Interop.Excel._Worksheet workSheet = excelApp.ActiveSheet;
                                         
                                            
                                            workSheet.Cells[1, 1] = " " + ds_temp_table.DataSetName;
                                            workSheet.Cells[1, 1].Style.Font.Bold = true;
                                            workSheet.Cells[2, 1].Value = "Customer Name : " + MillName;
                                            workSheet.Cells[2, 1].Style.Font.Bold = true;
                                            workSheet.Cells[3, 1].Value = "Shift : " + shift;
                                            workSheet.Cells[3, 1].Style.Font.Bold = true;
                                            if (type == ReportType25)
                                            {
                                                workSheet.Cells[4, 1].Value = "Date : " + sPresentStarttime.ToString("dd-MM-yyyy");
                                            }
                                            else
                                            {
                                                workSheet.Cells[4, 1].Value = "Date : " + DateTime.Now.ToString("dd-MM-yyyy"); //sPresentStarttime.ToString("dd-MM-yyyy");
                                            }
                                            workSheet.Cells[4, 1].Style.Font.Bold = true;

                                            int z = 5;

                                            for (int x = 0; x < ds_temp_table.Tables.Count; x++)
                                            {
                                                for (int i = 0; i < ds_temp_table.Tables[x].Columns.Count; i++)
                                                {
                                                    string name = ds_temp_table.Tables[x].Columns[i].Caption;
                                                    workSheet.Cells[z, i + 1] = ds_temp_table.Tables[x].Columns[i].Caption;
                                                }
                                                z++;
                                                for (int i = 0; i < ds_temp_table.Tables[x].Rows.Count; i++)
                                                {
                                                    for (int j = 0; j < ds_temp_table.Tables[x].Columns.Count; j++)
                                                    {
                                                        workSheet.Cells[z, j + 1] = ds_temp_table.Tables[x].Rows[i][j].ToString();
                                                    }
                                                    z++;
                                                }
                                               // wb.Worksheets.Add(ds_temp_table.Tables[x]);
                                            }

                                            
                                            wb.SaveAs(memoryStream);
                                            byte[] bytes = memoryStream.ToArray();
                                            memoryStream.Position = 0;
                                            memoryStream.Close();


                                            if (CC_1 != string.Empty)
                                            {
                                                _obj_CC_list.Add(CC_1);
                                            }
                                            if (CC_2 != string.Empty)
                                            {
                                                _obj_CC_list.Add(CC_2);
                                            }

                                            string User_name = _dt_Email_Setting.Rows[0]["User_name"].ToString();
                                            string Password = _dt_Email_Setting.Rows[0]["Password"].ToString();
                                            string Host_Name = _dt_Email_Setting.Rows[0]["Host_Name"].ToString();
                                            string Sender = _dt_Email_Setting.Rows[0]["Sender"].ToString();
                                            int Port_No = Convert.ToInt16(_dt_Email_Setting.Rows[0]["Port_No"]);

                                            MailMessage MailMessage = new MailMessage();
                                            MailAddress fromAddress = new MailAddress(Sender);
                                            MailMessage.From = fromAddress;
                                            foreach (string email in _obj_To_list)
                                            {
                                                MailMessage.To.Add(email);
                                            }

                                            if (type == ReportType25)
                                            {
                                                MailMessage.Subject = ds_temp_table.DataSetName + "_Report";
                                            }
                                            else
                                            {
                                                MailMessage.Subject = dt_report.DataSetName + "_Report";
                                            }
                                            string Body_Details = "" + MillName + " </ b > " + Environment.NewLine;

                                            //Body_Details += "  " + Dept_Name + "," + Environment.NewLine;

                                            Body_Details += "  " + shift + "." + Environment.NewLine;
                                            MailMessage.Body = Body_Details;
                                            foreach (string _CC_list in _obj_CC_list)
                                            {
                                                MailMessage.CC.Add(_CC_list);
                                            }
                                         
                                                MailMessage.Attachments.Add(new Attachment(new MemoryStream(bytes), sPresentStarttime.ToString("dd-MM-yyyy") + "_" + ds_temp_table.DataSetName + "_" + shift + ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
                                    
                                           

                                            MailMessage.IsBodyHtml = true;
                                            SmtpClient smtp = new SmtpClient();

                                            smtp.Host = Host_Name;
                                            smtp.EnableSsl = true;
                                            System.Net.NetworkCredential credentials = new System.Net.NetworkCredential();
                                            credentials.UserName = User_name;
                                            credentials.Password = Password;
                                            smtp.UseDefaultCredentials = true;
                                            smtp.Credentials = credentials;
                                            smtp.Port = Port_No;
                                            ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
                                            { return true; };
                                            smtp.Send(MailMes

}}

F-ES Sitecore

Ваш код может выглядеть так, как будто он работает при разработке на локальном компьютере, но этот код не будет работать при развертывании его на реальном веб-сервере. Вы не можете автоматизировать Офисные приложения из asp.net

Richard Deeming

Рекомендации по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и/или взаимоблокировку при запуске Office в этой среде.

Существуют различные способы создания электронных таблиц Excel на сервере без использования Office interop. Например:
* EPPlus[^];
* ClosedXML[^];
* SDK OpenXML[^];
* NPOI[^]

1 Ответов

Рейтинг:
0

Member 10549697

попробуйте использовать это

Галерея NuGet | ClosedXML 0.93.1[^]