Raja Ganapathy Ответов: 1

Как объединить datatable в dataset? Asp.net С#


у меня есть один документ excel и несколько листов.листы имеют много столбцов и строк.я загружаю документ в свой проект.и несколько листов привязываются к таблицам(имя листа задается как имя таблицы) с помощью цикла for.после привязки я меняю имя таблицы на source1,source2,source3 (три листа). Теперь как связать (объединить) три таблицы в одну таблицу (source1).

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

я попытался переименовать все таблицы в одно и то же имя, но дубликат таблицы не разрешен.как привязать одну и ту же таблицу.

1 Ответов

Рейтинг:
6

Karthik_Mahalingam

Невозможно переименовать все имена datatable в одно и то же значение.
использовать объект DataTable.Метод Слияния [^] чтобы объединить все данные datatable из набора данных.

см. этот пример:
предположим, что ваш набор данных содержит 3 таблицы, как показано ниже

DataSet dataSetExcel = new DataSet();
DataTable dt1 = new DataTable();
dt1.Columns.Add("ID");
dt1.Columns.Add("Name");
dt1.Rows.Add(1, "one");

DataTable dt2 = new DataTable();
dt2.Columns.Add("ID");
dt2.Columns.Add("Name");
dt2.Rows.Add(2, "two");

DataTable dt3 = new DataTable();
dt3.Columns.Add("ID");
dt3.Columns.Add("Name");
dt3.Rows.Add(3, "three");
dataSetExcel.Tables.AddRange(new DataTable[] {dt1,dt2,dt3 });


попробовать, как это, чтобы объединить все данные в новый объект DataTable

DataTable dtFinal = new DataTable();
           for (int i = 0; i < dataSetExcel.Tables.Count; i++)
           {
               if (i == 0)
                   dtFinal = dataSetExcel.Tables[i].Copy();
               else
                   dtFinal.Merge(dataSetExcel.Tables[i]);
           }


или вы должны объединить данные из листа 2 и листа 3 в лист 1 и удалить лист 2 и 3

dataSetExcel.Tables[0].Merge(dataSetExcel.Tables[1]);
          dataSetExcel.Tables[0].Merge(dataSetExcel.Tables[2]);
          dataSetExcel.Tables.RemoveAt(1); //  duplicate code to avoid index exception
          dataSetExcel.Tables.RemoveAt(1); //  duplicate code to avoid index exception
          dataSetExcel.AcceptChanges();


Raja Ganapathy

Я использовал приведенный ниже код для преобразования Excelsheet в Dataset и назвал таблицу как table1,table2, table3. и генерировать xml-теги xml объединили все три таблицы.у меня есть добавить столбец в таблицу и начать тег и тег как < table1></table1 & gt;... & lt;table n></table n & gt; теперь начальный и конечный тег должны быть одинаковыми.тогда только back end sql получает значение так, как объединить таблицу.я пробую этот код, если какой-либо другой метод доступен, пожалуйста, предложите мне.извините за поздний ответ и тот же вопрос спрашивайте снова и снова.


for (int k = 0; k < ds.Таблицы.Count; k++)
{
int c = k + 1;
строки листа = ДС.Таблицы[к].Метод toString();
если (ДС.Таблицы[к].ToString () = = "ExcelSheetName" + c)
{
ДС.Свойством datasetname = "Поиск"; ДС.Таблицы[k].TableName = "Table" + c; ds.Таблицы ["таблица" + c]. AcceptChanges();
}
}

Karthik_Mahalingam

если (ДС.Таблицы[к].TableName = = "ExcelSheetName" + c)

Raja Ganapathy

это пример. "ExcelSheetName" +c это загрузчик имени листа excel дайте имя имени листа excel (common), как форма 1, Форма 2 до формы N. лист объявляется как общий, а +c добавляет номер формы 1 Форма 2 Форма 3 ...

Karthik_Mahalingam

Итак, вам нужно преобразовать "ExcelSheetName" в "Form"?

Raja Ganapathy

Форма - это имя таблицы в наборе данных.

Karthik_Mahalingam

босс, каков ваш вклад и чего вы ожидаете

Raja Ganapathy

я близок к ответу. используйте этот. получение только некоторых ошибок :D

DataTable dtFinal = новый DataTable();
for (int i = 0; i < dataSetExcel.Таблицы.Граф; i++)
{
если (i = = 0)
dtFinal = dataSetExcel.Таблицы[i]. копия();
ещё
dtFinal.Слияния(dataSetExcel.Таблицы[i]);
}

Karthik_Mahalingam

это должно сработать, я уже проверил это

Raja Ganapathy

Ладно, брат НААН, немного изменим код Энн Ла Панни, закончим паннидувен. слияние ахуту спасибо. :Д

Raja Ganapathy

Мой вклад-это документ Excel.выходная хранится в виде объекта DataTable в dataset.но при этом разработчикам нужно то же имя для всех таблиц.athavathu авунга Энна sonnangana объекта DataTable Ла irunthu НААН в XML-ах конвертировать Панни avungaluku kuduthuten а констатирую и заканчивая vanthu тег <таблица1&ГТ;&ЛТ;/таблица1&ГТ; ippadi mudiyuthu это не формат ля thaan ethana таблице Ла vanthalum mudiyuthu.авунга Энна solrangana ethana vanthalum таблица начальный тег и конечный тег же iruntha легко, а получить panniduvom ну solranga.ippadi стол Тани Тани теги ах mudinja сделать панна-ну mudiyathu sonnanga.вся проблема ithaan. прости, брат ромба, что потревожил пандру Матири ируку.

Karthik_Mahalingam

слить Панну кодату?

Raja Ganapathy

Merge pannanum pannuna antha format ku vanthurum.ithaan peria issue va poitu iruku.avunga more than evalo table vanthalum start tag and end tag same ah irukanum nu solranga.athaan merge panni same table ah kudutha same ah irukum nu naan athuku idea keten.

Karthik_Mahalingam

Кэл панренгала?

Raja Ganapathy

Энна бро звонит?
смартфоне или планшете?

Karthik_Mahalingam

с

Karthik_Mahalingam

.