OpenXML - 创建和打开 Excel 文件而不保存它

露西82

我有一个代码,它使用 OpenXML 从 Datatable 创建一个新的 Excel 文件。完成创建此文件后,我想为用户打开它但不保存它。基本上,在这种情况下,Excel 所做的是将 excel 文件打开为“Workbook1”,然后如果您希望手动保存它。我有这个需求,因为用户想在将文件保存到磁盘之前检查数据是否对应。

这可以通过 Visibility 属性在 Interop 中完成(我已经有了这个解决方案,但问题是 Interop 在处理大量数据时速度非常慢,因此用户对它不满意),但我找不到在 OpenXML 中做同样事情的方法. 如果有人有任何建议,请告诉我。这是我创建Excel文件的代码:

  public void Export_To_Excel_stream(MemoryStream ms, DataTable dt)
        {
            using (SpreadsheetDocument dokument = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook))
            {
                WorkbookPart workbookPart = dokument.AddWorkbookPart();
                workbookPart.Workbook = new Workbook();

                WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
                var sheetData = new SheetData();
                worksheetPart.Worksheet = new Worksheet(sheetData);

                Sheets sheets = workbookPart.Workbook.AppendChild(new Sheets());
                Sheet sheet = new Sheet() { Id = workbookPart.GetIdOfPart(worksheetPart), SheetId = 1, Name = dt.TableName };
                sheets.Append(sheet);

                //header row
                Row header = new Row();
                List<String> Cols = new List<string>();
                foreach (DataColumn col in dt.Columns)
                {
                    Cols.Add(col.ColumnName);

                    Cell cell = new Cell
                    {
                        DataType = CellValues.String,
                        CellValue = new CellValue(col.ColumnName)
                    };
                    header.AppendChild(cell);
                }
                sheetData.AppendChild(header);


                foreach (DataRow row in dt.Rows)
                {
                    Row new_row = new Row();
                    foreach (String col in Cols)
                    {
                        Cell cell = new Cell
                        {
                            DataType = CellValues.String,
                            CellValue = new CellValue(row[col].ToString())
                        };
                        new_row.AppendChild(cell);
                    }
                    sheetData.AppendChild(new_row);
                }
                workbookPart.Workbook.Save();

            }
露西82

我想出的最好的事情是将 Excel 文件作为进程打开,然后在进程结束时将其删除。但是,我的 OpenXML 代码是一个 .dll,所以当我用已经打开的 Excel 文件关闭应用程序时,它不再自动删除:

public string file_path;

public void Export_To_Excel_stream(MemoryStream ms, DataTable dt)
{
    //...at the end, whe OPENXML file is created..        
    var open_Excel = Process.Start(file_path);
    open_Excel.EnableRaisingEvents = true;
    open_Excel.Exited += new EventHandler(open_excel_Exited);
 }

public void open_excel_Exited(object sender, EventArgs e)
{
     File.Delete(file_path);
}

如果有人有更好的解决方案,我会非常高兴:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 OpenXML 创建 Excel 不会打开文件

来自分类Dev

使用OpenXML读取Excel文件

来自分类Dev

使用OpenXML读取Excel文件

来自分类Dev

关闭所有打开的Excel文件而不保存

来自分类Dev

创建EXCEL并打开它

来自分类Dev

如何在不创建本地文件的情况下使用OpenXML创建Excel文件?

来自分类Dev

使用OpenXML打开Excel工作表时文件包含损坏的数据错误

来自分类Dev

通过OpenXML读取大型Excel文件

来自分类Dev

创建Excel文件时,如何使用OpenXml在单元格中添加自动换行?

来自分类Dev

Python入门:在打开Excel文件的同时保存它

来自分类Dev

openxml sdk excel文件打开关闭Windows Azure网站上的公式单元格重新计算

来自分类Dev

在OpenXML中创建自定义列宽(Excel)

来自分类Dev

使用OpenXML SDK读取Excel文件时遇到问题

来自分类Dev

与文档相反,OpenXML不利于读取大型Excel文件

来自分类Dev

使用 C# 更新 Excel 文件(OpenXml 格式)

来自分类Dev

无法使用文件处理创建和打开文件

来自分类Dev

OpenXML:读取 word 文件,添加一些文本并打开它而不将其保存在 ASP.Net Web 应用程序中

来自分类Dev

如何使用C#创建和写入Excel .xls文件

来自分类Dev

OpenXML PowerPoint文件将无法在IOS 7设备上打开

来自分类Dev

openxml无法通过sharepoint rest打开docx文件

来自分类Dev

创建ImagePart不会在OpenXML中保存关系

来自分类Dev

Excel无法打开XLSXWriter创建的文件

来自分类Dev

在C#中使用OpenXML SDK创建XLSX文件

来自分类Dev

在C#中使用OpenXml在Excel中创建日期单元格中的问题

来自分类Dev

RestKit:创建一个对象而不保存它

来自分类Dev

使用C#和OpenXML写入xlsx文件时,将修剪Excel单元格文本

来自分类Dev

如何使用AddDigitalSignatureOriginPart(DocumentFormat.OpenXml库)来保护Excel文件?

来自分类Dev

Excel 2010 VBA-关闭文件无提示不保存

来自分类Dev

Python:打开 Excel 工作簿(如果存在)或创建它

Related 相关文章

  1. 1

    使用 OpenXML 创建 Excel 不会打开文件

  2. 2

    使用OpenXML读取Excel文件

  3. 3

    使用OpenXML读取Excel文件

  4. 4

    关闭所有打开的Excel文件而不保存

  5. 5

    创建EXCEL并打开它

  6. 6

    如何在不创建本地文件的情况下使用OpenXML创建Excel文件?

  7. 7

    使用OpenXML打开Excel工作表时文件包含损坏的数据错误

  8. 8

    通过OpenXML读取大型Excel文件

  9. 9

    创建Excel文件时,如何使用OpenXml在单元格中添加自动换行?

  10. 10

    Python入门:在打开Excel文件的同时保存它

  11. 11

    openxml sdk excel文件打开关闭Windows Azure网站上的公式单元格重新计算

  12. 12

    在OpenXML中创建自定义列宽(Excel)

  13. 13

    使用OpenXML SDK读取Excel文件时遇到问题

  14. 14

    与文档相反,OpenXML不利于读取大型Excel文件

  15. 15

    使用 C# 更新 Excel 文件(OpenXml 格式)

  16. 16

    无法使用文件处理创建和打开文件

  17. 17

    OpenXML:读取 word 文件,添加一些文本并打开它而不将其保存在 ASP.Net Web 应用程序中

  18. 18

    如何使用C#创建和写入Excel .xls文件

  19. 19

    OpenXML PowerPoint文件将无法在IOS 7设备上打开

  20. 20

    openxml无法通过sharepoint rest打开docx文件

  21. 21

    创建ImagePart不会在OpenXML中保存关系

  22. 22

    Excel无法打开XLSXWriter创建的文件

  23. 23

    在C#中使用OpenXML SDK创建XLSX文件

  24. 24

    在C#中使用OpenXml在Excel中创建日期单元格中的问题

  25. 25

    RestKit:创建一个对象而不保存它

  26. 26

    使用C#和OpenXML写入xlsx文件时,将修剪Excel单元格文本

  27. 27

    如何使用AddDigitalSignatureOriginPart(DocumentFormat.OpenXml库)来保护Excel文件?

  28. 28

    Excel 2010 VBA-关闭文件无提示不保存

  29. 29

    Python:打开 Excel 工作簿(如果存在)或创建它

热门标签

归档