Сохранение документов Excel 2007

В .NET C # я пытаюсь открыть шаблон Excel, добавить данные и сохранить их как новый документ. Я пытаюсь использовать формат документа OpenXML. Кажется, я не могу найти никаких указаний, как это сделать. Похоже, что вся документация говорит о том, как записывать различные части в пакет, но я не могу найти ничего о том, что делать, когда вы закончите, и хочу его сохранить.

Кто-нибудь знает, где я могу найти эту информацию? Я, должно быть, неправильно об этом думаю, потому что не нахожу ничего полезного из того, что кажется очень простым.

Спасибо


person Weej    schedule 29.07.2009    source источник
comment
SpreadsheetML - это не OpemXML   -  person Joel Coehoorn    schedule 29.07.2009
comment
@Joel - Фактически, SpreadsheetML используется как имя для формата Excel 2007 Open XML, а также старого устаревшего формата Excel 2003 XML.   -  person Joe Erickson    schedule 29.07.2009


Ответы (2)


Для этого неплохо подходит ExcelPackage. Он не работал над этим основным автором, я не думаю, что какое-то время, но у него есть хорошие подписчики на его форуме, которые решают любые проблемы.

            FileInfo template = new FileInfo(Path.GetDirectoryName(Application.ExecutablePath)+"\\Template.xlsx");
        try
        {
            using (ExcelPackage xlPackage = new ExcelPackage(strFileName,template))
            {
                //Enable DEBUG mode to create the xl folder (equlivant to expanding a xlsx.zip file)
                //xlPackage.DebugMode = true;

                ExcelWorksheet worksheet = xlPackage.Workbook.Worksheets["Sheet1"];

                worksheet.Name = WorkSheetName;

                foreach (DataRow row in dt.Rows)
                {
                    int c = 1;
                    if (r > startRow) worksheet.InsertRow(r);
                    // our query has the columns in the right order, so simply
                    // iterate through the columns
                    foreach (DataColumn col in dt.Columns)
                    {
                        if (row[col].ToString() != null)
                        {
                            worksheet.Cell(r, c).Value = colValue;
                            worksheet.Column(c).Width = 10;
                        }
                        c++;
                    }
                    r++;
                }

                // change the sheet view to show it in page layout mode
                worksheet.View.PageLayoutView = false;

                // save our new workbook and we are done!
                xlPackage.Save();
                xlPackage.Dispose();
            }
        }
person Christopher Klein    schedule 07.08.2009

Доступ к документам Open XML / SpreadsheetML - далеко не тривиальное занятие. Спецификация большая и сложная. «Open XML SDK» (Google it) определенно помогает, но все же требует некоторых знаний стандарта Open XML, чтобы сделать многое.

SpreadsheetGear для .NET имеет API, аналогичный Excel, и может читать и записывать документы Excel Open XML (xlsx) как а также документы Excel 97-2003 (xls).

Вы можете увидеть несколько примеров SpreadsheetGear здесь и загрузить бесплатную пробную версию здесь.

Отказ от ответственности: я владею SpreadsheetGear LLC

person Joe Erickson    schedule 29.07.2009