我有一个使用OpenXML SDK生成Word文档的库,该库的一个功能是生成最后一行(例如SUM(ABOVE))公式的表.
Word具有内置的这些功能,但在生成文档时,我必须假设Word未安装在计算机上.
问题是,如果我只是生成表格和公式字段,它将不会在打开文档时自动更新,用户必须打开文档并手动选择"更新字段"才能计算函数.
有没有办法在代码中执行此操作(无需手动计算功能)?
我正在使用 OpenXML SDK 以编程方式用<w:sdt/>OpenXML (WordProcessingML) 标记块替换一些元素。
例如,我有一个包含以下内容的段落:
<w:p>
<w:run><w:text> Text before </w:text></w:run>
<w:sdt><w:sdtPr> ...</w:sdtPr><w:sdtContent>...</w:sdtContent></w:sdt>
<w:run><w:text> Text after </w:text></w:run>
</w:p>
Run Code Online (Sandbox Code Playgroud)
还有一个结构如下的表:
<w:tbl>
<w:tblPr>...</w:tblPr>
<w:tblGrid> ... gridCol elements ...</w:tblGrid>
<w:tr>
<w:trPr>...</w:trPr>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
</w:tr>
</w:tbl>
Run Code Online (Sandbox Code Playgroud)
基本上我想<w:sdt/>用表格标记替换段落中的元素。问题是我不能只是替换它,因为它会创建一个无效的文档(另一个段落元素中包含段落的表格无效)。
我想要得到的结果是这样的:
<w:p>
<w:run><w:text> Text before </w:text></w:run>
</w:p>
<w:tbl>
<w:tblPr>...</w:tblPr>
<w:tblGrid> ... gridCol elements ...</w:tblGrid>
<w:tr>
<w:trPr>...</w:trPr>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc>
<w:tc>
<w:tcPr>...</w:tcPr>
<w:p> Cell contents </w:p>
</w:tc> …Run Code Online (Sandbox Code Playgroud) 我正在使用Asp.Net MVC开发一个Web项目,我将不得不将其部署到一个农场环境中.
我已经阅读了很多文章而且我正在考虑完全禁用SessionState,我认为这会使一个更强大的应用程序,并且会省去一些令人头疼的事情(我读过的所有内容都告诉我处理会话农场不是小事).
有些事情我仍然没有完全清楚这种方法,主要是认证/授权过程.基本上我不知道如果服务器上没有启用SessionState,我可以如何(如果?)处理用户会话.如果用户登录该网站然后尝试访问另一个页面,我怎么知道该用户已经登录?我知道使用cookie是不安全的,我想到了混合的cookie与存储在数据库中的会话ID,但我想如果我禁用SessionState,我也无法访问会话ID.
什么是最好的方法?有没有可以指向我的推荐书/文章,所以我可以明白这一点?
非常感谢你的帮助
我有一个场景,我必须更新一个实体,如果它存在或添加一个新实体,如果它不存在.
我想为此执行一个单独的方法(如果它只是一次访问服务器就会很棒).
EF中有类似的东西吗?
现在我的代码看起来像这样:
var entity = db.Entities.FirstOrDefault(e => e.Id == myId);
if (entity == null)
{
entity = db.Entities.CreateObject();
entity.Id = myId;
}
entity.Value = "my modified value";
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
但我想避免第一个查询,如下所示:
var entity = new Entity();
entity.Id = myId;
entity.Value = "my modified value";
db.AddOrAttach(entity);
db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
有类似的东西吗?或者我必须执行第一个查询,不管是什么?
谢谢
我在EF查询中看到一个奇怪的行为,我想知道它为什么会发生.使用以下代码我没有得到任何结果:
if (category.Parent == null)
{
return Db.EventCategories.Where(c => c.Parent == category.Parent);
}
Run Code Online (Sandbox Code Playgroud)
但是使用此代码它确实返回了预期的结果:
if (category.Parent == null)
{
return Db.EventCategories.Where(c => c.Parent == null);
}
Run Code Online (Sandbox Code Playgroud)
有什么不同?不是null总是null吗?或者,当值为可空时,EF会将它们视为不同的元素(Parent的类型为int?).
我想设置datepicker字段的值和altField页面加载的时间,我想知道在datepicker中是否有一个选项可以自动执行(即无需调用setDate).
我知道如果我做这样的事情:
$("#date-div").datepicker({altField:"#date-input",altFormat:"yy-mm-dd", defaultDate:+7});
Run Code Online (Sandbox Code Playgroud)
如果date-div为a div,则在date-input加载页面时会自动将默认日期添加到字段中.但是,如果我使用文本字段而不是div它,则不会自动设置值(我必须setDate在单独的行中调用).
我只是好奇这个,我已经实现了它调用setDate,但我想知道是否有什么可以自动完成,如果不是为什么?(因为它在使用div显示日历时确实有效).
我看到大多数人都讨厌在数据库设计中有循环依赖.由于在大多数数据库引擎中对此的支持是"棘手的",我想知道这种设计是否有办法:
我有一个用户表和一张图片表
每张图片都有一个userId(插入它的用户)每个用户都有一张个人资料图片
我可能只是创建一个ProfilePictures表,但它会在其他一些地方引起问题(如图片评论).
我知道还有一些与此问题有关的其他问题,但它们与父子关系更相关,而这种情况并非如此.
那么,在这里使用循环依赖是否可以?如果没有,你会如何避免它?
我试图将存储在数据库中的一些字符串的旧应用程序转换为ASCII.
例如,字符串:ƒ`ƒƒƒlƒ<ƒp[ƒgƒi[,Ì'I'ð]存储在数据库中.
现在,如果我在文本编辑器中复制该字符串并将其保存为ASCII,然后在Web浏览器中打开该文件并将其设置为自动检测编码,我会在日语中获得正确的字符串:チャネルパートナーの选択,以及页面说检测到的编码是日语(Shift_JIS).
当我尝试在C#代码中进行转换时,执行以下操作:
var asciiBytes = Encoding.ASCII.GetBytes(text);
var japaneseEncoding = Encoding.GetEncoding(932);
var convertedBytes = Encoding.Convert(japaneseEncoding, Encoding.ASCII, asciiBytes);
var japaneseString = japaneseEncoding.GetString(convertedBytes);
Run Code Online (Sandbox Code Playgroud)
我明白了吗?`??? ????????????????? 作为日语字符串,因此我无法在网页上显示它.
任何光都会受到赞赏.
谢谢
我一直在尝试创建一个库来替换Word 2003文档中的MergeFields,一切正常,但是当我替换它时,我失去了应用于该字段的样式,有没有办法保留它?
这是我用来替换字段的代码:
private void FillFields2003(string template, Dictionary<string, string> values)
{
object missing = Missing.Value;
var application = new ApplicationClass();
var document = new Microsoft.Office.Interop.Word.Document();
try
{
// Open the file
foreach (Field mergeField in document.Fields)
{
if (mergeField.Type == WdFieldType.wdFieldMergeField)
{
string fieldText = mergeField.Code.Text;
string fieldName = Extensions.GetFieldName(fieldText);
if (values.ContainsKey(fieldName))
{
mergeField.Select();
application.Selection.TypeText(values[fieldName]);
}
}
}
document.Save();
}
finally
{
// Release resources
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试在选择中使用CopyFormat和PasteFormat方法,也使用get_style和set_style但不使用exent.
我有一个链接,由于几个原因,我通过在它上面显示透明div来禁用.这适用于FF和Chrome就好了,但在IE上链接仍然是可点击的.如果我向div添加背景颜色(透明除外),则该链接不应该是可点击的.
关于如何实现这一点的任何想法?
这是一个例子:http://jsfiddle.net/GdEak/7/
<div id=container>
<div class='disabled'></div>
<a href="#">Some link</a>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
#container{
position:relative;
}
.disabled{
width:200px;
height:30px;
position:absolute;
top:0;
left:0;
}
a{
display:inline-block;
width:200px;
height:30px;
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
c# ×4
ms-word ×2
openxml ×2
sql ×2
.net ×1
asp.net ×1
asp.net-mvc ×1
css ×1
encoding ×1
formulas ×1
interop ×1
jquery ×1
jquery-ui ×1
mergefield ×1
null ×1
openxml-sdk ×1
optimization ×1
session ×1
sql-update ×1
transparency ×1
vsto ×1
web-farm ×1