我整天都在打这个.在我的styles.xml文件中,我有这样的颜色信息:
<fgColor theme ="0"tint =" - 0.249977111117893"/>
ECMA 376将主题颜色参考定义为:
索引到<clrScheme>集合,引用在Theme部分中表示的特定<sysClr>或<srgbClr>值.
好的,这听起来很容易.以下是我的clrScheme xml的摘录:
<a:clrScheme name ="Office">
<a:
dk1 > <a:sysClr val ="windowText"lastClr ="000000"/>
</ a:dk1>
<a:lt1>
<a:sysClr val ="window "lastClr ="FFFFFF"/>
</ a:lt1>
指数零是黑色,他们想要变暗吗?我可以告诉你,在应用色调后,颜色应为#F2F2F2.
我的困惑是主题="0"究竟意味着什么?它不可能意味着变暗#000000.检查MSDN只会让我更加困惑.来自http://msdn.microsoft.com/en-us/library/dd560821.aspx
请注意,主题颜色整数从调色板中从左到右开始从零开始计数.主题颜色3是深色2文本/背景颜色.
实际上,如果你从0开始计数,第三个条目是Light 2. Dark 2是第二个.这里的任何人都可以为我阐明这个问题吗?什么主题="0"真的意味着什么?
这是我一直在使用的VB6代码来应用色调.您可以将其粘贴到vba编辑器中并运行test子.
Public Type tRGB
R As Byte
G As Byte
B As Byte
End Type
Public Type tHSL
H As Double
S As Double
L As Double
End Type
Sub TestRgbTint()
Dim c As tRGB
RGB_Hex2Type "ffffff", c
RGB_ApplyTint c, …Run Code Online (Sandbox Code Playgroud) 我已经在网络上阅读了很多有关如何使用OpenXML API获取单元格数据的内容。但是实际上并没有太多特别简单的地方。多数似乎与写SpreadsheetML有关,而不是阅读...但是即使那样也无济于事。我有一个包含表格的电子表格。我知道表的名称是什么,我可以找出它所在的表以及表中的列。但是我不知道如何获取包含表中数据的行集合。
我已经准备好加载文档并获得工作簿的句柄:
SpreadsheetDocument document = SpreadsheetDocument.Open("file.xlsx", false);
WorkbookPart workbook = document.WorkbookPart;
Run Code Online (Sandbox Code Playgroud)
我已经找到表/表了:
Table table = null;
foreach (Sheet sheet in workbook.Workbook.GetFirstChild<Sheets>())
{
WorksheetPart worksheetPart = (WorksheetPart)document.WorkbookPart.GetPartById(sheet.Id);
foreach (TableDefinitionPart tableDefinitionPart in worksheetPart.TableDefinitionParts)
{
if (tableDefinitionPart.Table.DisplayName == this._tableName)
{
table = tableDefinitionPart.Table;
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以通过遍历table.TableColumns遍历表中的列。
我使用xslt生成电子表格,并希望使用包含换行文本的单元格(或者更好的是:其中包含换行符的文本)。
因此,我的xslt为sheetdata生成了以下XML:
<sheetData>
<row r="1">
<c r="A1" t="inlineStr">
<is>
<t>
a simple string
line break jeeeehaaa
</t>
</is>
</c>
</row>
</sheetData>
Run Code Online (Sandbox Code Playgroud)
完成工作簿的构建后,我在Excel中打开它。而且没有换行符,只有A1中的一个简单的单行字符串。
有人对此有解决方案吗?不必在xml或xslt中(但会很好)。我也可以在C#中做一些事情
我正在使用OPENXML SDK 2.0来传输电子表格文件.源数据来自数据表,并使用openxml将其写入Spreadsheet.如果数据表的列数据中有一个具有"Treshold%"(此文本上面有选项卡空间)并且同样写入excel但是在excel单元格中将其写入"Treshold%"并删除标签空间.
我使用的代码如下.使用workSheetWriter.PasteText和workSheetWriter.PasteValue方法.
WorksheetWriter workSheetWriter = new WorksheetWriter(spreadSheet, workSheet);
int intValue = 0;
if (strValue.Contains("$"))
{
strValue = strValue.Replace("$", "");
strValue = strValue.Replace(",", "");
workSheetWriter.PasteValue(cellLocation, strValue, CellValues.Number);
}
else if (int.TryParse(strValue, out intValue))
{
workSheetWriter.PasteValue(cellLocation, strValue, CellValues.Number);
}
else if (string.IsNullOrEmpty(strValue))
{
workSheetWriter.PasteText(cellLocation, strValue);
}
else
{
workSheetWriter.PasteText(cellLocation, strValue);
}
Run Code Online (Sandbox Code Playgroud)
请帮忙.如何将开头的标签空间(Treshold%)中的值写入excel单元格中的格式相同?
我有一个 XML-Excel 文件(SpreadsheetML 格式):
<?xml version="1.0" encoding="utf-8"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas- microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Company>My Company</Company>
</DocumentProperties>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="stTxt">
<Font ss:FontName="Arial" ss:Size="8"/>
<Alignment ss:Horizontal="Left"/>
<NumberFormat ss:Format="@"/>
</Style>
<Style ss:ID="stTopHeadline">
<Font ss:FontName="Arial" ss:Size="8" />
<Alignment ss:Horizontal="Left"/>
<NumberFormat ss:Format="@"/>
</Style>
...
Run Code Online (Sandbox Code Playgroud)
现在我需要使用 C# 将这些文件转换为 XLSX 文件。有没有办法使用 Open Xml 或其他库将其转换为 Excel 2010 XLSX 格式?
我有一个rails应用程序,它以xls格式从我的数据库中导出内容.
我正在寻找创建两个单独的表而不将它们放在同一行.反正有两个索引在同一行吗?
<?xml version="1.0"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<ss:Worksheet ss:Name="Sheet">
<Table>
<% @data.each do |data| %>
<Row ss:Index="1">
<Cell ss:Index="1"><Data ss:Type="String"><%= data.name %></Data></Cell>
</Row>
<% end %>
<% @moreData.each do |moreData| %>
<Row ss:Index="1">
<Cell ss:Index="2"><Data ss:Type="String"><%= moreData.name %></Data></Cell>
</Row>
<% end %>
</Table>
</ss:Worksheet>
</Workbook>
Run Code Online (Sandbox Code Playgroud)
这就是我对上面代码的看法:
如果可能的话,这就是我想要实现的,而不是将两个循环放在同一行中:
我想以编程方式生成一个Excel(Salesforce Apex),类似于下面的屏幕截图。单元的数量,单元的背景色将在运行时确定,并因此使用编程方式。

为了实现这一点,我尝试为“单元格”>“数据”应用内联样式,但是似乎我们不能在那里应用内联样式。例如,样式通过应用于第一个单元格ss:StyleID="s66"。但是对于第二个Cell,它不能以这种方式使用内联样式。由于无法预先定义样式,因此我需要一些动态的方法。谁能确认这是否可行或提供任何指导?
<Row>
<Cell ss:StyleID="s66"><Data ss:Type="String">Test Sheet1</Data></Cell>
<Cell ><Data ss:Type="String"><Font ss:Color="#FF0000">Sample Text</Font></Data></Cell>
</Row>
Run Code Online (Sandbox Code Playgroud) 我使用Office OpenXml写入Excel文件.该文件是一个模板,因此它已经包含了我的列的所有标题和格式.我将具有前导零的数字插入到"特殊"列中,该列基本上是10位数字.但是在我的代码中,我可以看到它正在设置值,例如0000000004.工作表中的结果,该4单元格中的值和实际单元格显示0000000004.
这是我写入单元格的代码.
if (reader[2].ToString().Length < 9)
{
myworksheet.Cell(firstrow, 12).Value = reader[2].ToString(); //0045678945
}
else
{
myworksheet.Cell(firstrow, 12).Value = reader[2].ToString().Substring(0, 9); //0045678945
}
Run Code Online (Sandbox Code Playgroud)
当我像上面所述打开excel表时,我的价值45678945不是0045678945
任何帮助,将不胜感激.
我似乎无法找到有关如何使用Open XML SDK 2.0在Excel 2007中向单元格添加超链接的任何文档或代码示例.我使用以下代码,但是我缺少一个步骤吗?
WorksheetPart workSheetPart = ExcelUtilities.GetWorkSheetPart(mWorkBookPart, "Program");
workSheetPart.AddHyperlinkRelationship(new Uri("http://www.google.com", UriKind.Absolute), true);
workSheetPart.Worksheet.Save();
mWorkBookPart.Workbook.Save();
Run Code Online (Sandbox Code Playgroud)
然后当我尝试打开Excel文档时,它说文件已损坏,因为无法找到超链接的关系ID.您如何设置或创建关系ID?