相关疑难解决方法(0)

如何在不安装Ms Office的情况下在C#中创建Excel(.XLS和.XLSX)文件?

如何使用C#创建Excel电子表格而无需在运行代码的计算机上安装Excel?

.net c# excel file-io

1804
推荐指数
37
解决办法
105万
查看次数

使用c#中的Open Xml SDK将DataTable导出到Excel

对不起我的英文请.我是开放式xml sdk的新手.我的程序能够将一些数据和DataTable导出到Excel文件(模板)在模板中,我将数据插入到一些占位符中.它的工作非常好,但我也需要插入一个DataTable ...我的示例代码:

using (Stream OutStream = new MemoryStream())
{
    // read teamplate
    using (var fileStream = File.OpenRead(templatePath))
        fileStream.CopyTo(OutStream);

    // exporting
    Exporting(OutStream);

    // to start
    OutStream.Seek(0L, SeekOrigin.Begin);

    // out
    using (var resultFile = File.Create(resultPath))
        OutStream.CopyTo(resultFile);
Run Code Online (Sandbox Code Playgroud)

下一个导出方法

private void Exporting(Stream template)
{
    using (var workbook = SpreadsheetDocument.Open(template, true, new OpenSettings                          { AutoSave = true }))
    {
        // Replace shared strings
        SharedStringTablePart sharedStringsPart = workbook.WorkbookPart.SharedStringTablePart;
        IEnumerable<Text> sharedStringTextElements = sharedStringsPart.SharedStringTable.Descendants<Text>();

        DoReplace(sharedStringTextElements);
        // Replace inline strings
        IEnumerable<WorksheetPart> worksheetParts = workbook.GetPartsOfType<WorksheetPart>();

        foreach (var worksheet in …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml openxml-sdk

41
推荐指数
3
解决办法
11万
查看次数

使用Microsoft.Office.Interop.Excel SaveAs Error导出到.xlsx

我正在编写一个模块,用于将DataTable导出到Excel,Microsoft.Office.Interop.Excel但在开始认真之前,我想让基本工作正常工作:打开文件,另存为,关闭.

我已成功打开并保存扩展名为.xls的文件,但使用.xlsx扩展名保存不起作用.它写.xlsx文件,但当我尝试打开它时,我收到以下错误:

Excel无法打开文件'SomeFile.xlsx',因为文件格式无效.验证文件是否已损坏,文件扩展名是否与文件格式匹配.

我用来打开,保存和关闭文件的代码是:

Excel.Application excelApplication = new Excel.Application();
//excelApplication.Visible = true;
//dynamic excelWorkBook = excelApplication.Workbooks.Add();
Excel.Workbook excelWorkBook = excelApplication.Workbooks.Add();
//Excel.Worksheet wkSheetData = excelWorkBook.ActiveSheet;
int rowIndex = 1; int colIndex = 1;
excelApplication.Cells[rowIndex, colIndex] = "TextField";

// This works.
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xls", Excel.XlFileFormat.xlWorkbookNormal,
    System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false,
    Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value,
    System.Reflection.Missing.Value, System.Reflection.Missing.Value);

// This does not!?
excelWorkBook.SaveAs("C:\\MyExcelTestTest.xlsx", Excel.XlFileFormat.xlWorkbookNormal, 
    System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false, 
    Excel.XlSaveAsAccessMode.xlShared, false, false, System.Reflection.Missing.Value, 
    System.Reflection.Missing.Value, System.Reflection.Missing.Value);

excelWorkBook.Close(Missing.Value, Missing.Value, Missing.Value);
Run Code Online (Sandbox Code Playgroud)

我也尝试了文件格式Excel.XlFileFormat.xlExcel12代替,Excel.XlFileFormat.xlWorkbookNormal但这甚至没有写,而是抛出COMException:

来自HRESULT的异常:0x800A03EC

解决这个问题的任何帮助都将非常受欢迎.

编辑:我现在也尝试过: …

c# excel winforms-interop

35
推荐指数
2
解决办法
12万
查看次数

标签 统计

c# ×3

excel ×3

.net ×1

file-io ×1

openxml ×1

openxml-sdk ×1

winforms-interop ×1