标签: openxml

如何在C#中创建Word文档?

我有一个项目,我想以MS Word格式生成报告导出.该报告将包括图像/图形,表格和文本.做这个的最好方式是什么?第三方工具?你有什么经历?

.net c# ms-word openxml

73
推荐指数
6
解决办法
8万
查看次数

使用epplus c#设置Excel工作表单元格的自定义BackgroundColor

问题:

我正在使用EEPlus.

我坚持应用十六进制颜色代码,例如#B7DEE8,我的Excel工作表中的单元格.

我得到了以下(工作)代码:

ws.Cells["A1:B1"].Style.Fill.PatternType = ExcelFillStyle.Solid;
ws.Cells["A1:B1"].Style.Fill.BackgroundColor.SetColor(Color.Gray);
Run Code Online (Sandbox Code Playgroud)

但我需要以下内容:

ws.Cells["A1:B1"].Style.Fill.BackgroundColor.SetColor("#B7DEE8");
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:是否可以在EEPlus中使用十六进制颜色代码?如果是这样,我该怎么做?

c# openxml epplus

69
推荐指数
3
解决办法
7万
查看次数

使用OpenXML在Word中插入换行符

我使用openxml WordProcessingDocument打开Word模板并用字符串替换占位符x1.这工作正常,除非我需要字符串包含换行符.如何用文本替换x1可能包含单词可识别的换行符?我试过\n\r但是这些都不起作用

只是在打开单词模板时进一步解释我将其读入StreamReader然后使用.Replace替换x1.

c# ms-word openxml

54
推荐指数
4
解决办法
4万
查看次数

如何在Word 2007 .docx文件中搜索单词?

我想在Word 2007文件(.docx)中搜索文本字符串,例如,可以/可以从Word中的搜索中找到的"某些特殊短语".

有没有办法从Python看文本?我对格式化没兴趣 - 我只想将文档分类为是否有"某些特殊短语".

python ms-word docx openxml

47
推荐指数
5
解决办法
4万
查看次数

打开xml excel读取单元格值

我正在使用Open XML SDK打开Excel xlsx文件,并尝试读取每个工作表中位置A1的单元格值.我使用以下代码:

using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(openFileDialog1.FileName, false))
{
    var sheets = spreadsheetDocument.WorkbookPart.Workbook.Descendants<Sheet>();

    foreach (Sheet sheet in sheets)
    {
        WorksheetPart worksheetPart = (WorksheetPart)spreadsheetDocument.WorkbookPart.GetPartById(sheet.Id);
        Worksheet worksheet = worksheetPart.Worksheet;

        Cell cell = GetCell(worksheet, "A", 1);

        Console.Writeline(cell.CellValue.Text);
     }
}

private static Cell GetCell(Worksheet worksheet, string columnName, uint rowIndex)
{
     Row row = GetRow(worksheet, rowIndex);

     if (row == null)
         return null;

     return row.Elements<Cell>().Where(c => string.Compare
               (c.CellReference.Value, columnName +
               rowIndex, true) == 0).First();
}

// Given a worksheet and a row index, return …
Run Code Online (Sandbox Code Playgroud)

c# openxml openxml-sdk

47
推荐指数
3
解决办法
7万
查看次数

阅读Excel Open XML忽略了空白单元格

我在这里使用公认的解决方案将excel表转换为数据表.如果我有"完美"数据,这可以正常工作,但如果我的数据中间有一个空白单元格,那么它似乎会在每列中放入错误的数据.

我想这是因为在下面的代码中:

row.Descendants<Cell>().Count()
Run Code Online (Sandbox Code Playgroud)

是填充单元格的数量(不是所有列)AND:

GetCellValue(spreadSheetDocument, row.Descendants<Cell>().ElementAt(i));
Run Code Online (Sandbox Code Playgroud)

似乎找到下一个填充的单元格(不一定是该索引中的内容)所以如果第一列为空并且我调用ElementAt(0),它将返回第二列中的值.

这是完整的解析代码.

DataRow tempRow = dt.NewRow();

for (int i = 0; i < row.Descendants<Cell>().Count(); i++)
{
    tempRow[i] = GetCellValue(spreadSheetDocument, row.Descendants<Cell>().ElementAt(i));
    if (tempRow[i].ToString().IndexOf("Latency issues in") > -1)
    {
        Console.Write(tempRow[i].ToString());
    }
}
Run Code Online (Sandbox Code Playgroud)

datatable excel openxml openxml-sdk

42
推荐指数
4
解决办法
4万
查看次数

什么表明Office Open XML Cell包含日期/时间值?

我正在使用Office Open XML SDK读取.xlsx文件,并对阅读日期/时间值感到困惑.我的一个电子表格有此标记(由Excel 2010生成)

<x:row r="2" spans="1:22" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
  <x:c r="A2" t="s">
    <x:v>56</x:v>
  </x:c>
  <x:c r="B2" t="s">
    <x:v>64</x:v>
  </x:c>
  .
  .
  .
  <x:c r="J2" s="9">
    <x:v>17145</x:v>
  </x:c>
Run Code Online (Sandbox Code Playgroud)

单元格J2具有日期序列值和样式属性s="9".但是,Office Open XML规范称9对应于后面的超链接.这是ECMA-376第4版第499页第1部分 - 基础和标记语言参考 .pdf的屏幕截图.

替代文字

规范中包含的presetCellStyles.xml文件也将builtinId9称为后续超链接.

<followedHyperlink builtinId="9">
Run Code Online (Sandbox Code Playgroud)

规范中的所有样式都只是可视化格式样式,而不是数字样式.定义的数字样式在哪里?如何区分样式引用s="9"与指示单元格格式(可视)样式与数字样式?

显然,我正在寻找错误的地方,以匹配单元格上的样式与其数字格式.哪里是找到这些信息的合适地点?

excel openxml openxml-sdk

42
推荐指数
3
解决办法
4万
查看次数

OpenXML电子表格中的单元格样式(SpreadsheetML)

我使用OpenXML SDK在C#中生成了一个.xlsx电子表格,但无法弄清楚如何使单元格样式起作用.我一直在研究Excel生成的文件,并且无法弄清楚它是如何完成的.

现在,我正在创建一个填充,创建一个CellStyleFormat指向填充,创建一个CellFormat指向的索引CellStyleFormat,然后创建一个CellStyle指向CellFormat.

这是我用来生成文档的代码:

Console.WriteLine("Creating document");
using (var spreadsheet = SpreadsheetDocument.Create("output.xlsx", SpreadsheetDocumentType.Workbook))
{
    Console.WriteLine("Creating workbook");
    spreadsheet.AddWorkbookPart();
    spreadsheet.WorkbookPart.Workbook = new Workbook();
    Console.WriteLine("Creating worksheet");
    var wsPart = spreadsheet.WorkbookPart.AddNewPart<WorksheetPart>();
    wsPart.Worksheet = new Worksheet();

    var stylesPart = spreadsheet.WorkbookPart.AddNewPart<WorkbookStylesPart>();
    stylesPart.Stylesheet = new Stylesheet();
    stylesPart.Stylesheet.Fills = new Fills();

    // create a solid red fill
    var solidRed = new PatternFill() { PatternType = PatternValues.Solid };
    solidRed.AppendChild(new BackgroundColor { Rgb = HexBinaryValue.FromString("FF00FF00") });

    stylesPart.Stylesheet.Fills.AppendChild(new Fill { PatternFill = …
Run Code Online (Sandbox Code Playgroud)

c# excel openxml spreadsheetml

42
推荐指数
2
解决办法
9万
查看次数

使用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万
查看次数

使用Open XML从C#中的Excel到DataTable

我正在使用Visual Studio 2008,我需要DataTable使用Open XML SDK 2.0从Excel工作表创建一个.我需要使用带有工作表第一行的DataTable列创建它,并使用其余值完成它.

有没有人有一个示例代码或链接可以帮助我这样做?

c# openxml import-from-excel openxml-sdk

38
推荐指数
3
解决办法
6万
查看次数