Рейтинг:
10
Karthik_Mahalingam
Небольшое изменение в решении, опубликованном ранее
Объявите название таблицы в поле DataTable
как
DataTable dt = new DataTable("Table Name 1"); // declare the Table Name when creating the DataTable
DataTable dt1 = new DataTable("Table Name 2");// declare the Table Name when creating the DataTable
DataTable dt2 = new DataTable("Table Name 3");// declare the Table Name when creating the DataTable
и обновление в ячейке, как показано ниже, обратитесь к встроенным комментариям
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet ws = package.Workbook.Worksheets.Add("Your Sheet Name");
int rowNumber = 1;
foreach (DataTable dtTemp in ds.Tables)
{
ws.Cells["A" + rowNumber].Value = dtTemp.TableName; // write it on top of the table
ws.Cells["A" + ( rowNumber +1)].LoadFromDataTable(dtTemp, true);
rowNumber += dtTemp.Rows.Count + 2; // to create 2 empty rows
}
package.SaveAs(new FileInfo(@"D:\Projects\CPTemp\CPTemp\TextFile.xlsx"));
}
для получения дополнительной информации см.
Документация EPPLUS[
^]
Vikrant_saini
Привет, пожалуйста, измените мой код.
поскольку я получаю только имя таблицы tablename Table Name 1 и в каждом первом столбце каждой таблицы, а не в верхней части таблицы.
Karthik_Mahalingam
вам придется дать разные имена каждому datatable, проверьте код, в котором вы добавляете datatable в dataset
Vikrant_saini
Да, это так. я даю разные имена таблиц для каждого datatable.
Но только получение первого имени datatable в первом столбце каждой таблицы.
Karthik_Mahalingam
опубликуйте свой код.
Vikrant_saini
используя системы.Данных.Поставщики sqlclient;
использование системы.ИО;
использование OfficeOpenXml;
общественный разделяемого класса _default : на системы.Веб.Пользовательского интерфейса.Страницы
{
охраняемых недействительными в(объект отправителя, EventArgs в электронной)
{
string constring = "источник данных=DESKTOP-7MRDTE0\\SQLEXPRESS2014;начальный каталог=;идентификатор пользователя=sa;пароль=";
SqlConnection con1 = новый SqlConnection();
con1 = null;
пробовать
{
con1 = новый SqlConnection(constring);
вы видите con1.Открыть();
SqlCommand cmd = new SqlCommand("[usp_GetCampaignSchedule]", con1);
УМК.CommandType = CommandType.Хранимая процедура;
cmd.Parameters.Add("@CampaignID", SqlDbType.Int).Значение = 1102;
SqlDataAdapter da = новый SqlDataAdapter(cmd);
SqlCommand cmd1 = new SqlCommand("[usp_GetEmailStatitics]", con1);
cmd1.Свойство Commandtype = Значение Commandtype.Хранимая процедура;
cmd1.Parameters.Add("@CampaignID", SqlDbType.Int).Значение = 1102;
SqlDataAdapter da1 = новый SqlDataAdapter(cmd1);
SqlCommand cmd2 = new SqlCommand("[usp_GetCampaignDetails]", con1);
cmd2.Свойство Commandtype = Значение Commandtype.Хранимая процедура;
cmd2.Parameters.Add("@CampaignID", SqlDbType.Int).Значение = 1101;
SqlDataAdapter da2 = новый SqlDataAdapter(cmd2);
SqlCommand cmd3 = new SqlCommand("[usp_GetForwardReport]", con1);
cmd3.Свойство Commandtype = Значение Commandtype.Хранимая процедура;
cmd3.Parameters.Add("@CampaignID", SqlDbType.Int).Значение = 1101;
SqlDataAdapter da3 = новый SqlDataAdapter(cmd3);
SqlCommand cmd4 = new SqlCommand("[usp_GetClickThrough]", con1);
cmd4.Свойство Commandtype = Значение Commandtype.Хранимая процедура;
cmd4.Parameters.Add("@CampaignID", SqlDbType.Int).Значение = 1102;
SqlDataAdapter da4 = новый SqlDataAdapter(cmd4);
SqlCommand cmd5 = new SqlCommand("[usp_GetBouncedReport]", con1);
cmd5.Свойство Commandtype = Значение Commandtype.Хранимая процедура;
cmd5.Parameters.Add("@Campaignid", SqlDbType.Int).Значение = 1102;
SqlDataAdapter da5 = новый SqlDataAdapter(cmd5);
DataTable dt = новый DataTable("Таблица 1");
DataTable dt1 = новый DataTable("Таблица 2");
DataTable dt2 = новый DataTable("Таблица 3");
DataTable dt3 = новый DataTable("Таблица 4");
DataTable dt4 = новый DataTable("Таблица 5");
DataTable dt5 = новый DataTable("Таблица 6");
DataSet ds = новый набор данных();
да.Заполнить(ДТ);
и DA1.Заполнить(ст1);
Да2.Заполнить(ст2);
da3.Заполнить(Ст3);
da4.Fill(dt4);
da5.Заполнить(дт5);
ДС.столы.Добавить(dt);
ДС.столы.Добавить(dt1);
ДС.столы.Добавить(dt2);
ДС.столы.Добавить(dt3);
ДС.столы.Добавить(dt4);
ДС.столы.Добавить(dt5);
ExcelPackage package = новый ExcelPackage();
var worksheet = пакет.Рабочая тетрадь.Worksheets.Add("ExcelSheet");
лист.Смотреть.ShowGridLines = false;
int z = 1;
для (int x = 0; x < ds.Таблицы.Count; x++)
{
int r = z;
int t = r + 1;
for (int i = 1; i < ds.Таблицы[x].столбцы.Count + 1; i++)
{
рабочий лист.Клетки[р, я].Значение = ДС.Таблицы[х].Столбцы[я - 1].Метод toString();
}
for (int i = 0; i < ds.Таблицы[x].строки.Граф; i++)
{
для (int j = 0; j < ds.Таблицы[x].столбцы.Count; j++)
{
рабочий лист.Ячейки[i + t, j + 1].Значение = ds.таблицы[x].строки[i]
[Дж].Метод toString();
}
}
з += ДС.Таблицы[х].Строк.Граф + 4;
рабочий лист.Ячейки.AutoFitColumns();
}
пакет.SaveAs(new FileInfo(@"C:\Users\Stored.xlsx"));
}
поймать (исключение бывший)
{
Приставка.
Karthik_Mahalingam
полный код пожалуйста
Karthik_Mahalingam
попробовать это
DataTable dt = new DataTable("Table Name 1"); // declare the Table Name when creating the DataTable
dt.Columns.Add("ID" );
dt.Columns.Add( "Name");
dt.Rows.Add(1, "aa");
dt.Rows.Add(2, "bb");
DataTable dt1 = new DataTable("Table Name 2");// declare the Table Name when creating the DataTable
dt1.Columns.Add("ID11");
dt1.Columns.Add("Name11");
dt1.Rows.Add(11, "aa1111");
dt1.Rows.Add(22, "bb111");
DataTable dt2 = new DataTable("Table Name 3");// declare the Table Name when creating the DataTable
dt2.Columns.Add("ID22");
dt2.Columns.Add("Name22");
dt2.Rows.Add(221, "aa222");
dt2.Rows.Add(233, "bb222");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("ExcelSheet");
worksheet.View.ShowGridLines = false;
int startIndexOfRow = 1;
foreach (DataTable dtCurrent in ds.Tables)
{
// Adding Title
worksheet.Cells[startIndexOfRow, 1].Value = dtCurrent.TableName;
// Adding Headers
startIndexOfRow++;
for (int i = 0; i < dtCurrent.Columns.Count; i++)
{
worksheet.Cells[startIndexOfRow, (i+1)].Value = dtCurrent.Columns[i].ColumnName;
}
// Adding rows
for (int i = 0; i < dtCurrent.Rows.Count; i++)
{
startIndexOfRow++;
for (int j = 0; j < dtCurrent.Columns.Count; j++)
{
worksheet.Cells[startIndexOfRow, j + 1].Value = dtCurrent.Rows[i][j].ToString();
}
}
startIndexOfRow += 3; // 3 empty rows
package.SaveAs(new FileInfo(@"D:\Projects\CPTemp\CPTemp\TextFile.xlsx"));
}
}
Vikrant_saini
Это не дает мне правильного ответа.
С помощью этого кода только одна таблица экспортируется много раз(=нет таблиц, которые мы определяем).
Спасибо
Karthik_Mahalingam
переместите эту линию за пределы петли
пакет.SaveAs(new FileInfo(@"D:\Projects\CPTemp\CPTemp\TextFile.xlsx"));
Vikrant_saini
Нет необходимости делать это, это работает хорошо.
Раньше я делал ошибку, в адаптере данных заполнял только таблицу 1.
А да.заполнить(ДТ).
Спасибо.
Karthik_Mahalingam
using OfficeOpenXml;
using PdfSharp.Pdf;
using PdfSharp.Pdf.IO;
using PdfSharp.Pdf.Security;
using System.Data;
using System.IO;
namespace CP
{
class POCProgram
{
static void Main(string[] args)
{
DataTable dt = new DataTable("Table Name 1"); // declare the Table Name when creating the DataTable
dt.Columns.Add("ID");
dt.Columns.Add("Name");
dt.Rows.Add(1, "aa");
dt.Rows.Add(2, "bb");
DataTable dt1 = new DataTable("Table Name 2");// declare the Table Name when creating the DataTable
dt1.Columns.Add("ID11");
dt1.Columns.Add("Name11");
dt1.Rows.Add(11, "aa1111");
dt1.Rows.Add(22, "bb111");
DataTable dt2 = new DataTable("Table Name 3");// declare the Table Name when creating the DataTable
dt2.Columns.Add("ID22");
dt2.Columns.Add("Name22");
dt2.Rows.Add(221, "aa222");
dt2.Rows.Add(233, "bb222");
DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables.Add(dt1);
ds.Tables.Add(dt2);
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("ExcelSheet");
worksheet.View.ShowGridLines = false;
int startIndexOfRow = 1;
foreach (DataTable dtCurrent in ds.Tables)
{
// Adding Title
worksheet.Cells[startIndexOfRow, 1].Value = dtCurrent.TableName;
// Adding Headers
startIndexOfRow++;
for (int i = 0; i < dtCurrent.Columns.Count; i++)
{
worksheet.Cells[startIndexOfRow, (i + 1)].Value = dtCurrent.Columns[i].ColumnName;
}
// Adding rows
for (int i = 0; i < dtCurrent.Rows.Count; i++)
{
startIndexOfRow++;
for (int j = 0; j < dtCurrent.Columns.Count; j++)
{
worksheet.Cells[startIndexOfRow, j + 1].Value = dtCurrent.Rows[i][j].ToString();
}
}
startIndexOfRow += 3; // 3 empty rows
}
package.SaveAs(new FileInfo(@"D:\Projects\CPTemp\CPTemp\TextFile.xlsx"));
}
}
}
Vikrant_saini
Спасибо, все работает нормально.
Karthik_Mahalingam
крутой