小编wil*_*lvv的帖子

生成Open XML Word文档后自动更新公式字段

我有一个使用OpenXML SDK生成Word文档的库,该库的一个功能是生成最后一行(例如SUM(ABOVE))公式的表.

Word具有内置的这些功能,但在生成文档时,我必须假设Word未安装在计算机上.

问题是,如果我只是生成表格和公式字段,它将不会在打开文档时自动更新,用户必须打开文档并手动选择"更新字段"才能计算函数.

有没有办法在代码中执行此操作(无需手动计算功能)?

c# ms-word openxml formulas

6
推荐指数
1
解决办法
3919
查看次数

OpenXML:用 WordprocessingML 中的表格替换 <sdt/> 元素

我正在使用 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)

c# openxml openxml-sdk

5
推荐指数
1
解决办法
4431
查看次数

在不使用Session的情况下创建可扩展的ASP.Net MVC网站

我正在使用Asp.Net MVC开发一个Web项目,我将不得不将其部署到一个农场环境中.

我已经阅读了很多文章而且我正在考虑完全禁用SessionState,我认为这会使一个更强大的应用程序,并且会省去一些令人头疼的事情(我读过的所有内容都告诉我处理会话农场不是小事).

有些事情我仍然没有完全清楚这种方法,主要是认证/授权过程.基本上我不知道如果服务器上没有启用SessionState,我可以如何(如果?)处理用户会话.如果用户登录该网站然后尝试访问另一个页面,我怎么知道该用户已经登录?我知道使用cookie是不安全的,我想到了混合的cookie与存储在数据库中的会话ID,但我想如果我禁用SessionState,我也无法访问会话ID.

什么是最好的方法?有没有可以指向我的推荐书/文章,所以我可以明白这一点?

非常感谢你的帮助

asp.net asp.net-mvc session web-farm

5
推荐指数
1
解决办法
2648
查看次数

实体框架:更新实体或添加(如果它不存在)

我有一个场景,我必须更新一个实体,如果它存在或添加一个新实体,如果它不存在.

我想为此执行一个单独的方法(如果它只是一次访问服务器就会很棒).

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)

有类似的东西吗?或者我必须执行第一个查询,不管是什么?

谢谢

sql optimization entity-framework-4 sql-update

5
推荐指数
1
解决办法
7130
查看次数

查询中的实体框架null值

我在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?).

.net null entity-framework

5
推荐指数
1
解决办法
1464
查看次数

在加载时自动将所选日期设置为altField

我想设置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显示日历时确实有效).

jquery jquery-ui jquery-ui-datepicker

5
推荐指数
1
解决办法
2967
查看次数

SQL:避免循环依赖

我看到大多数人都讨厌在数据库设计中有循环依赖.由于在大多数数据库引擎中对此的支持是"棘手的",我想知道这种设计是否有办法:

我有一个用户表和一张图片表

每张图片都有一个userId(插入它的用户)每个用户都有一张个人资料图片

我可能只是创建一个ProfilePictures表,但它会在其他一些地方引起问题(如图片评论).

我知道还有一些与此问题有关的其他问题,但它们与父子关系更相关,而这种情况并非如此.

那么,在这里使用循环依赖是否可以?如果没有,你会如何避免它?

sql database-design circular-dependency

5
推荐指数
1
解决办法
6041
查看次数

C#:在shift-JIS中转换日文文本编码并以ASCII格式存储为UTF-8

我试图将存储在数据库中的一些字符串的旧应用程序转换为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)

我明白了吗?`??? ????????????????? 作为日语字符串,因此我无法在网页上显示它.

任何光都会受到赞赏.

谢谢

c# encoding

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

替换Word 2003文档中的MergeFields并保留样式

我一直在尝试创建一个库来替换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.

c# interop vsto ms-word mergefield

4
推荐指数
1
解决办法
4232
查看次数

IE CSS:透明框下的链接是可点击的

我有一个链接,由于几个原因,我通过在它上面显示透明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)

谢谢!

css internet-explorer transparency

4
推荐指数
1
解决办法
1816
查看次数