我正在使用 OpenXML 在 SQL 中加载 XML,同时声明变量我可以达到的最大值是 8000 个字符:
DECLARE @xml_text varchar(8000)
Run Code Online (Sandbox Code Playgroud)
由于文本,ntext 不允许与 openXML 一起使用,我还有什么其他替代方法可以在 SQL 中加载整个 XML(超过 20000 个字符)?
我正在处理一些通过解析 xml 从 xlsx 文件读取数据的代码。除了日期单元格之外,一切都非常简单。
日期存储为整数,并有一个“s”属性,它是样式表的索引,可用于获取日期格式字符串。以下是之前 stackoverflow 问题中的一些示例,链接如下:
19 = 'h:mm:ss 上午/下午';
20 = 'h:mm';
21 = 'h:mm:ss';
22 = 'm/d/yy h:mm';
这些是来自 ooxml 标准的内置日期格式字符串,但是似乎 excel 倾向于使用自定义格式字符串而不是内置字符串。这是来自 Excel 2007 电子表格的示例格式。numFmtId 大于 164 是自定义格式。
Run Code Online (Sandbox Code Playgroud)<numFmt formatCode="MM/DD/YY" numFmtId="165"/>
确定单元格是否应该格式化为日期很困难,因为我能找到的唯一指标是 formatCode。这显然是一个日期,但可以通过多种方式对单元格进行格式化。我最初的尝试是在 formatCode 中查找 Ms、Ds 和 Ys,但这似乎有问题。
有没有人有这个问题的运气?目前似乎标准 excel 阅读库缺乏 xlsx 支持。我已经通读了标准,并在没有多少运气的情况下挖掘了很多 xlsx 文件。
最好的信息似乎来自这个 stackoverflow 问题:
谢谢!
我有一个文档,我正在通过获取段落进行迭代。对于这些段落中的每一个,我都需要创建一个新文档并保存它。我不知道如何将源文档中的段落添加到新文档中。
foreach (var p in paragraphsFromSourceDocument)
{
using (var memoryStream = new MemoryStream())
{
var doc = WordprocessingDocument.Create(memoryStream, WordprocessingDocumentType.Document);
doc.AddMainDocumentPart();
// Create the Document DOM.
doc.MainDocumentPart.Document = new Document();
doc.MainDocumentPart.Document.Body = new Body();
//Add the paragraph 'p' to the Body here:
// HOW ?????????
doc.MainDocumentPart.Document.Save();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 OpenXML 生成一个包含数千个表的 word 文档。其中一些跨越整个页面的长度,这很好,因为无法防止这种情况发生,但是,许多表只包含几行。有没有我可以设置的属性来防止这些表被破坏?
当只有两行的表格被拆分到两页时,或者当关键行是上一页上唯一拆分的行时,这看起来很糟糕。我花了大量时间浏览 MSDN 页面,但没有运气……希望之前有人这样做过。
我正在使用 open xml sdk 创建 excel 文件。我想使用 open xml 阅读它。当我想阅读它时,我在这一行出错
SharedStringTablePart sstpart = workbookPart.GetPartsOfType<SharedStringTablePart>().First();it return null
如果我打开excel文件并再次保存。它会创建共享字符串表并运行。
从excel读取
#region OpenFile
public void OpenFile(string directory)
{
try
{
fs = new FileStream(directory, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
doc = SpreadsheetDocument.Open(fs, false);
}
catch (FileNotFoundException ex)
{
string exception = string.Format("Doya bulunamad?{0}", directory);
throw new ApplicationException(exception);
}
}
#endregion
#region GetWorkSheet
public void AssignWorkSheet(int sheetID)
{
if (fs == null || doc == null)
throw new ApplicationException("Dosya aç?lamad?");
WorkbookPart workbookPart = doc.WorkbookPart;
SharedStringTablePart sstpart …Run Code Online (Sandbox Code Playgroud) 在 Word 2013(桌面)和 office.js 中,我们看到一些围绕用户选择 ( GetSelectedDataAsync, SetSelectedDataAsync) 的功能,但没有任何功能可以让您查看整个 (OpenXML) 文档。我错过了什么吗?
我正在使用 OpenXml 创建 Excel 文件并导出表格数据。一种情况是我希望一列具有预定义值的下拉列表,例如 true 和 false。我跟着这个问题写了如下代码
DataValidation dataValidation = new DataValidation
{
Type = DataValidationValues.List,
AllowBlank = true,
SequenceOfReferences = new ListValue<StringValue>() { InnerText = "B1" },
//Formula1 = new Formula1("'SheetName'!$A$1:$A$3") // this was used in mentioned question
Formula1 = new Formula1("True,False") // I need predefined values.
};
DataValidations dvs = worksheet.GetFirstChild<DataValidations>(); //worksheet type => Worksheet
if (dvs != null)
{
dvs.Count = dvs.Count + 1;
dvs.Append(dataValidation);
}
else
{
DataValidations newDVs = new DataValidations();
newDVs.Append(dataValidation); …Run Code Online (Sandbox Code Playgroud) 我目前正在满足使用 Open XML 框架导出 Excel 文件的要求。我遇到的问题是,该电子表格的一列必须是十进制格式 (#,###.##),它必须允许求和。我可以使用以下方法以这种格式完美导出 Excel:
private static Cell CreateTextCell(string header, UInt32 index, object text, CellStyleIndex cellStyle)
{
var cell = new Cell
{
DataType = CellValues.InlineString,
CellReference = header + index,
StyleIndex = (UInt32)cellStyle
};
var istring = new InlineString();
var t = new Text { Text = text.ToString() };
istring.AppendChild(t);
cell.AppendChild(istring);
return cell;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我指定了应用我提到的格式的StyleIndex。但问题在于 Excel 将此值识别为文本:
这就是为什么我尝试创建一个新方法,该方法在我想在文件中创建小数时立即调用:
private static Cell CreateValueCell(string header, UInt32 index, decimal value, CellStyleIndex cellStyle)
{
var cell = new …Run Code Online (Sandbox Code Playgroud) 我是新手打开 xml 并尝试将标题行的背景颜色设置为灰色,但它始终将其设置为黑色。请参考我正在使用的以下代码。
return new Stylesheet(
new Fonts(
new Font( // Index 0 - The default font.
new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
new Color() { Rgb = new HexBinaryValue() { Value = "000000" } },
new FontName() { Val = "Calibri" }),
new Font( // Index 1 - The bold white font.
new DocumentFormat.OpenXml.Spreadsheet.Bold(),
new DocumentFormat.OpenXml.Spreadsheet.FontSize() { Val = 11 },
new DocumentFormat.OpenXml.Spreadsheet.Color() { Rgb = new HexBinaryValue() { Value = "ffffff" } },
new DocumentFormat.OpenXml.Spreadsheet.FontName() { Val …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Open XML创建文件,但是当尝试仅添加标题的第一行时,文件已损坏且无法打开,有人可以告诉我我在这里做错了吗?
using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Create("C:\\testpdfs\\mytest.xlsx", SpreadsheetDocumentType.Workbook))
{
// Add a WorkbookPart to the document.
WorkbookPart workbookpart = spreadsheetDocument.AddWorkbookPart();
workbookpart.Workbook = new Workbook();
// Add a WorksheetPart to the WorkbookPart.
WorksheetPart worksheetPart = workbookpart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet(new SheetData());
// Add Sheets to the Workbook.
Sheets sheets = spreadsheetDocument.WorkbookPart.Workbook.
AppendChild<Sheets>(new Sheets());
// Append a new worksheet and associate it with the workbook.
Sheet sheet = new Sheet()
{
Id = spreadsheetDocument.WorkbookPart.
GetIdOfPart(worksheetPart),
SheetId = 1,
Name = ViewBag.Title
}; …Run Code Online (Sandbox Code Playgroud) openxml ×10
c# ×5
excel ×5
openxml-sdk ×3
.net ×1
cell ×1
ms-office ×1
ms-word ×1
python ×1
row ×1
spreadsheet ×1
sql ×1
sql-server ×1
sqlxml ×1
xlsx ×1