subodhan Ответов: 0

Как читать макрос excel на языке Си#


Привет,

Поскольку мне нужно прочитать макрос Excel и сохранить его в текстовый файл на C#, мы не используем COM-объект ( Interop ) .

Любое предложение должно appericate ?

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

Я пробовал использовать пакет Nuget ( NPOI), но не смог прочитать макрос .


Ниже приведен пример кода для чтения файла .

using (var fs = new FileStream("a.xlsx", FileMode.Open, FileAccess.Read))
{
	wb = new XSSFWorkbook(fs);

	for (int i = 0; i < wb.Count; i++)
	{
		comboBox1.Items.Add(wb.GetSheetAt(i).SheetName);
	}


	}

	// clear grid before filling
	dataGridView1.Rows.Clear();
	dataGridView1.Columns.Clear();

	// get sheet
	sh = (XSSFSheet)wb.GetSheet(comboBox1.SelectedItem.ToString());




	int i = 0;
	while (sh.GetRow(i) != null)
	{
		// add necessary columns
		if (dataGridView1.Columns.Count < sh.GetRow(i).Cells.Count)
		{
			for (int j = 0; j < sh.GetRow(i).Cells.Count; j++)
			{
				dataGridView1.Columns.Add("", "");
			}
		}

		// add row
		dataGridView1.Rows.Add();

		// write row value
		for (int j = 0; j < sh.GetRow(i).Cells.Count; j++)
		{
			var cell = sh.GetRow(i).GetCell(j);

			if (cell != null)
			{
				// TODO: you can add more cell types capability, e. g. formula
				switch (cell.CellType)
				{
					case NPOI.SS.UserModel.CellType.Numeric:
						dataGridView1[j, i].Value = sh.GetRow(i).GetCell(j).NumericCellValue;
						break;
					case NPOI.SS.UserModel.CellType.String:
						dataGridView1[j, i].Value = sh.GetRow(i).GetCell(j).StringCellValue;
						break;
				}
			}
		}

		i++;
	}
}

CHill60

А что вы пробовали? Поделитесь своим кодом

CHill60

Вы можете использовать ссылку "улучшить вопрос", чтобы добавить детали к вашему вопросу. На этот раз я сделал это для тебя.
Итак, у вас есть какой - то код, и вы сказали нам, чего хотите, но не описали свою проблему - "не повезло" нам совсем не помогает

subodhan

Спасибо, что я улучшил этот вопрос .
Прошу помочь .

Gerry Schmitz

Кажется, что это бессмысленное упражнение, так как вы не можете запустить макрос "текстовый файл". Сохраните рабочую книгу, если вам нужна "резервная копия" (поскольку ваше следующее упражнение, вероятно, будет заключаться в том, как вернуть макрос в Excel).

subodhan

Привет Джерри ,
Мне нужно скопировать макрос Excel в текстовый файл, чтобы сравнить макрос имеет изменение или нет, а также нет необходимости запускать макрос.

Мне нужно просто скопировать все макросы в текстовый файл .( без объекта взаимодействия )

Надеюсь, вы сможете помочь

DerekT-P

Вы говорите: "мы не используем COM - взаимодействие" - но это то, что вам нужно сделать просто. Если по какой-то причине вы *не можете* использовать COM-взаимодействие, то взгляните на https://www.codeproject.com/articles/15216/office-2007-bin-file-format который описывает форматы файлов внутри офисного документа. Вы должны иметь возможность получить доступ к макросам таким образом.

0 Ответов