Как читать макрос 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 который описывает форматы файлов внутри офисного документа. Вы должны иметь возможность получить доступ к макросам таким образом.